En mémoire, un nombre peut être codé par de nombreux schémas différents:
int(entier signé dont la taille dépend de l’implémentation C++ ; souvent 32 bits)- uint64_t (entier sur 64 bits en c++)
- float32 (réel sur 32 bits)
- float64 (réel sur 64 bits)
- …
Nécessaire :
Pour suivre ce tutoriel, vous devez savoir convertir des entiers décimaux en binaires. Si jamais vous avez un doute, vous pouvez checker mon article sur cette conversion : Convertir un entier non signé décimal en Binaire
Rappel :
Un nombre réel peut s’écrire avec une notation appelé notation scientifique. Par exemple:
Représentation en Virgule flottante :
Pour réduire la difficulté de cet exercice, les exemples utilisés et expliqués seront en float32 et non en float64.
Un float32 est composé de 3 parties: une partie signe, une partie exposant et une partie mantisse:

- Le signe est représenté sur 1 bit (0 pour un nombre positif, 1 pour un nombre négatif).
- L’exposant est représenté sur 8 bits.
- La mantisse est représenté sur 23 bits (fraction sur le schéma ci-dessus).
Exemple: -12,4375 en float32 :
Conversion de 12 en binaire :
Si vous ne savez pas comment faire, retournez sur mon précédent article (ici).
Conversion de 0.4375 en binaire :
La méthode pour ce calcul est la suivante :
On choisis de s’arrêter là car le reste est égale à 0.
Maintenant, en lisant de haut en bas, nous pouvons voir que .
Déplacez la virgule :
donne .
Pour une représentation en float32, nous devons représenter ce nombre en écriture scientifique :
Pour calculer la mantisse, il suffit de relever la partie décimal et de la compléter avec 0 pour avoir 23 bits).
On sait maintenant que la mantisse est égale à .
Calcul de l’exposant :
On sait que le biais est de 127 pour un float32.
a pour exposant .
Ainsi, l’exposant biaisé est , ce qui est égale à .
Signe:
-12,4375 étant un nombre négatif, ainsi, son bit de signe sera 1.
Résultat:
En regroupant le tout (dans l’ordre Signe-Exposant-Mantisse).
La représentation float32 de -12,4375 est donc :