Flottant

Comment représenter un nombre binaire flottant en binaire ? Si on a la valeur 51,12983. On sait qu’on peut représenter le nombre entier 51 par addition de puissances de 2, soit 32 + 16 + 2 + 1.

On fait la même chose pour la partie flottante en multipliant par deux successivement la partie flottante, c’est à dire en décalant d’un bit vers la gauche, puis en regardant si on obtient une partie entière non nulle. 12983 * 2

etc.

On obtient la série $$00100001$$

En suivant le cheminement inverse de diviser successivement 1 par 2 puis en additionnant les diviseurs de 1 par deux, on retrouve approximativement le nombre initial. Cette manière pas decalage et addition est rapide, permet des additions, soustractions et multiplications sur le même mode qu’avec des nombres entiers, au prix d’une perte de précision vers les parties ininitésimales du nombre.

Essayons avec 5,1875. On sait que 5, se note en binaire 101, maintenant pour la partie décimale

nombre multiplié par deux partie entiere
0,1875 0,1875 * 2 == 0,375 0
0,375 0,75 0
0,75 1,5 1
0,5 1,0 1

Soit 0011. On arrête le procédé lorsque la partie décimale devient nulle. La notation binaire de 5,1875 est donc 101,0011.

A noter qu’on procéderait de la même manière par multiplication successives si on était en base 10 :

nombre multiplié par dix partie entiere
0,1875 0,1875 * 10 == 1,875 1
0,875 8,75 8
0,75 7,5 7
0,5 5 5

soit 1875. La notation décimale de 5,1875 est donc 5,1875.

En base 2, si on peut représenter l’entiereté des nombres décimaux, pour la partie practionnaire il y aura des lacunes du fait que 2 et 10 ne sont congrus que sur 5. C’est à dire que seul les nombres flottants en base 10 dont chaque multiplication successive produit 0, 5 ou 10 auront une représentation binaire exacte.

Exercice : afficher les 100 premiers flottants pouvant être représentés sans ambigüité en base 2

Solution

Additional resources

  • https://pixees.fr/informatiquelycee/n_site/nsi_prem_float.html#:~:text=La%20norme%20IEEE%20754%20est,format%20dit%20%22double%20pr 🌍⤴ écision%22.