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
- $$0,12983 x 2 = 0,25966$$ on obtient $$0$$, qu’on retire
- $$0,25966 x 2 = 0,51932$$ on obtient $$0$$, qu’on retire
- $$0,51932 x 2 = 1,03864$$ on obtient $$1$$, qu’on retire
- $$0,03864 x 2 = 0,07728$$ on obtient $$0$$, qu’on retire
- $$0,07728 x 2 = 0,15456$$ on obtient $$0$$, qu’on retire
- $$0,15456 x 2 = 0,30912$$ on obtient $$0$$, qu’on retire
- $$0,30912 x 2 = 0,61824$$ on obtient $$0$$, qu’on retire
- $$0,61824 x 2 = 1,23648$$ on obtient $$1$$, qu’on retire
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