# Représentation binaire d'un réel et flottants ## Introduction Testez les instructions suivantes dans la console ci-dessous : * `0.1 * 3 == 0.3` * `0.1 + 0.2` * `3 + 10**(-16) == 3` * `1.1 + 1.1 == 2.2` * `1.1 + 1.1 + 1.1 == 3.3` Vous le voyez, les nombres ne sont pas toujours représentés de façon exacte dans la machine, ce qui peut poser des problèmes de sécurité ou de fiabilité. En voici quelques-uns : * le crash d’Ariane 5 lors de son premier vol le 4 juin 1996 est dû à une conversion d’un nombre flottant en 64 bits à un entier de 16 bits (des ingénieurs ont voulu économiser 800 000 francs en utilisant des tests faits sur Ariane 4, le crash a coûté 500 millions de dollars...) ; * du fait d'une erreur d'arrondi de l’ordre de 10-7, un anti-missile Patriot rate sa cible, un missile SCUD, le 25 février 1995 ce qui cause la mort de 28 soldats et une centaine de blessés ([source](https://www.gao.gov/assets/220/215614.pdf)) ; * [d'autres problèmes moins graves](http://tangentex.com/VirguleFlottante.htm).
## Ecriture décimale, écriture binaire ### Que signifie l'écriture décimale Prenons un nombre, par exemple 324,687. Ce nombre comporte 6 chiffres et la position de chaque chiffre fait qu'il est affecté d'un certain poids. Ici : 324,687 = 3 × 100 + 2 × 10 + 4 × 1 + 6 × 0,1 + 8 × 0,01 + 7 × 0,001 donc 324,687 = 3 × 102 + 2 × 101 + 4 × 100 + 6 × 10-1 + 8 × 10-2 + 7 × 10-3. L'écriture décimale repose donc sur l'utilisation des puissances de 10. ### Ecriture binaire De la même façon, il est possible de représenter les nombres réels en binaire. Le principe est le même que ci-dessus sauf qu'il faut utiliser des puissances de 2. Exemple : l'écriture binaire 11101,101 signifie 11101,101 = 1 × 24 + 1 × 23 + 1 × 22 + 0 × 21 + 1 × 20 + 1 × 2-1 + 0 × 2-2 + 1 × 2-3. #### Passage du binaire au décimal Il faut savoir que \(2^{-p} = \dfrac{1}{2^p}\) donc \(2^{-1} = \dfrac{1}{2}=0,5\) ; \(2^{-2} = \dfrac{1}{4}=0,25\) ; \(2^{-3} = \dfrac{1}{8}=0,125\), etc. Ainsi : 11101,101 = 1 × 16 + 1 × 8 + 1 × 4 + 1 × 1 + 1 × 0,5 + 1 × 0,125 = 29,625. #### Passage du décimal au binaire Ecrivons le nombre 29,625 en binaire : * la partie entière se convertit comme nous l'avons vu dans un chapitre précédent : * soit en retirant des puissances de 2, en commençant par la plus grande possible : 29 = 16 + 8 + 4 + 1 donc 29 = 111012 ; * soit par des divisions successives entières par 2, en lisant les restes en partant de la fin ; * la partie après la virgule se convertit : * soit en retirant des puissances de 2, en commençant par la plus grande possible : 0,625 = 0,5 + 0,125 = 1/2 + 1/8 donc 0,625 = 0,1012 * soit par des multiplications par 2, en gardant la partie entière à chaque fois : 0,625 × 2 = [1](blue),25 0,25 × 2 = [0](blue),5 0,5 × 2 = [1](blue),0 (arrêt car il y a 0 après la virgule) donc 0,625 = 0,1012 Conclusion : 29,62510 = 11101,1012.
  1. Ecrivez en décimal les nombres suivants représentés en binaire : 10011,11 et 110101,0111.
  2. Ecrivez en binaire les nombres suivants représentés en décimal : 1563,125 et 0,1.