Il y a plusieurs méthodes de codage des réels en binaire.
code en binaire pure, IEEE, etc.
Le codage en binaire pur est mathématiquement plus "pur", mais il est très limité.
Entiers:
10 (binaire) = 1*2^1 (décimal) = 2
100 (binaire) = 1*2^2 (décimal) = 4
1000 (binaire) = 1*2^3 (décimal) = 8
10000 (binaire) = 1*2^4 (décimal) = 16
Pour les nombre en virgule flottante, on compte dans l'autre sens:
1 (binaire) = 1 en décimal
0.1 (binaire) = 1/2^1 en décimal = 1/2 = 0,5
0.01 (binaire) = 1/2^2 = 1/4 = 0,25
0.001 (binaire) = 1/2^3 = 1/8 = 0,125
0.0001 (binaire) = 1/2^4 = 1/16 = 0,0625
etc.
Donc, le gros gros inconvénient du codage binaire pure est qu'il est incapable de représenter certains nombres réels comme 0,3 par exemple.
(D'où les résultats étranges avec les float en langage C.)
Le code IEEE (ou autres codages avec mantisse) permet de s'affranchir de ce problème.