Cette page suit toujours le même plan : le principe en une phrase, les étapes dans l'ordre exact, une démonstration interactive, le code Python, puis les points clés à retenir.
Utilisation de la démonstration
La démonstration avance uniquement quand vous cliquez sur « Suivant » ou « Précédent » : rien ne bouge tout seul. Un bouton « Lecture automatique » est disponible si vous préférez laisser les étapes défiler seules, à une vitesse que vous choisissez.
1. Vocabulaire à connaître avant de commencer
Chaque mot ci-dessous est utilisé exactement dans ce sens dans toute la page.
Mot
Définition précise
Flottant
Un nombre à virgule (par opposition à un entier), aussi appelé nombre à virgule flottante.
Norme IEEE 754
La façon standard de représenter les flottants en binaire, utilisée par la quasi-totalité des ordinateurs et des langages de programmation, dont Python.
Simple précision
Un format de la norme IEEE 754 qui utilise 32 bits au total pour représenter un flottant : 1 bit de signe, 8 bits d'exposant, 23 bits de mantisse.
Signe
Le premier bit : 0 si le nombre est positif, 1 s'il est négatif.
Exposant
La puissance de 2 par laquelle on multiplie, stockée avec un biais (+127 en simple précision) pour pouvoir représenter des exposants négatifs sans bit de signe séparé.
Mantisse
Les chiffres après la virgule, une fois le nombre écrit sous la forme 1,xxxx × 2ᵉ.
Écriture normalisée
L'écriture d'un nombre binaire sous la forme 1,xxxx × 2ᵉ, avec un seul chiffre (toujours 1) avant la virgule.
2. Le nombre d'exemple utilisé dans cette page
On représente le nombre 12,375 en simple précision (32 bits), selon la norme IEEE 754.
On écrit le nombre en binaire sous la forme normalisée 1,xxxx × 2ᵉ, puis on stocke séparément le signe, l'exposant e (biaisé de +127), et les chiffres xxxx (la mantisse), sur 32 bits au total.
3.2 — Les étapes, dans l'ordre exact
On écrit la partie entière et la partie décimale du nombre en binaire.
On normalise l'écriture sous la forme 1,xxxx × 2ᵉ (un seul chiffre, toujours 1, avant la virgule).
On détermine le bit de signe : 0 si le nombre est positif, 1 s'il est négatif.
On calcule l'exposant biaisé : e + 127, écrit en binaire sur 8 bits.
On prend les chiffres après la virgule de l'écriture normalisée : c'est la mantisse, complétée par des 0 jusqu'à 23 bits.
On assemble : signe (1 bit) + exposant (8 bits) + mantisse (23 bits) = 32 bits au total.
3.3 — Démonstration interactive
signe (1 bit)exposant (8 bits)mantisse (23 bits)
Signe
Exposant
Mantisse
Étape 1 / 1
Les cases grises « ? » représentent les bits pas encore déterminés à cette étape.
3.4 — Code Python
import structdef bits_ieee754(x): """Représentation binaire IEEE 754 (32 bits) du flottant x.""" paquet = struct.pack('>f', x) entier = int.from_bytes(paquet, byteorder='big') return format(entier, '032b')# Jeu de données : le même exemple que la démonstration ci-dessusx = 12.375bits = bits_ieee754(x)print(bits[0], bits[1:9], bits[9:])# Résultat affiché : 0 10000010 10001100000000000000000
3.5 — Points clés à retenir
En simple précision (32 bits), le biais de l'exposant est toujours +127.
Certaines valeurs décimales exactes en base 10 n'ont pas d'écriture binaire finie : elles sont arrondies. C'est pour cela qu'en Python, 0.1 + 0.2 affiche 0.30000000000000004 et non 0.3.
Il existe aussi la double précision (64 bits : 1 + 11 + 52), utilisée par défaut pour les flottants en Python, qui est plus précise que la simple précision.