Informatique

Conversion décimal → float IEEE 754

La norme IEEE 754 est le standard de représentation des nombres à virgule flottante dans tous les processeurs modernes. Convertir un nombre décimal vers cette représentation suit un protocole précis.

Format IEEE 754 simple précision (32 bits)

Valeur représentée : $(-1)^s \cdot 1.m \cdot 2^{e - 127}$.

  • 1 bit de signe (s)
  • 8 bits d'exposant biaisé (e, biais = 127)
  • 23 bits de mantisse (m, implicite 1 devant)

Méthode de conversion

  • 1. Déterminer le signe (0 positif, 1 négatif)
  • 2. Convertir la partie entière en binaire
  • 3. Convertir la partie fractionnaire en binaire (multiplications successives par 2)
  • 4. Normaliser en écrivant sous la forme $1.xxx \cdot 2^n$
  • 5. Calculer l'exposant biaisé : $n + 127$
  • 6. La mantisse est $xxx$ complétée à 23 bits

Exemple : convertir 6.75

Signe : 0 (positif).

6 en binaire : 110. 0.75 en binaire : 0.11 (car $0.5 + 0.25$).

Donc 6.75 = 110.11 en binaire.

Normalisation : $1.1011 \cdot 2^2$.

Exposant biaisé : $2 + 127 = 129 = 10000001$.

Mantisse (partie après la virgule, 23 bits) : $10110000000000000000000$.

Résultat : 0 10000001 10110000000000000000000.

Particularités à connaître

  • Zéro : $s = 0$ ou $1$, $e = 0$, $m = 0$ (deux zéros : +0 et -0)
  • Infini : $e = 255$, $m = 0$
  • NaN : $e = 255$, $m \neq 0$
  • Nombres dénormalisés : $e = 0$, $m \neq 0$ (pour représenter des nombres très petits)

À retenir

La représentation IEEE 754 explique pourquoi $0.1 + 0.2 \neq 0.3$ en pratique : 0.1 n'a pas de représentation binaire finie, d'où une erreur d'arrondi.

IEEE 754 double précision

La double précision (64 bits, type double en C/Java, float64 en NumPy) suit la même structure que la simple, mais avec des champs plus larges :

Précision : environ 15-17 chiffres décimaux significatifs. Plage : environ $\pm 10^{\pm 308}$.

  • 1 bit de signe
  • 11 bits d'exposant biaisé (biais = 1023)
  • 52 bits de mantisse

Erreurs de représentation classiques

Certains nombres décimaux simples n'ont pas de représentation binaire finie, d'où des erreurs d'arrondi :

  • $0{,}1$ → $0.000110011\overline{0011}\dots$ en binaire (périodique)
  • $0{,}2$ → même problème
  • $0{,}1 + 0{,}2 \neq 0{,}3$ en IEEE 754 (résultat : $0{,}30000000000000004$)
  • $0{,}5$ → $0{,}1$ en binaire (exact, car $1/2$)
  • $0{,}25$ → $0{,}01$ en binaire (exact)

À retenir

Règle d'or : ne jamais tester l'égalité stricte entre flottants calculés. Toujours utiliser une tolérance : abs(a - b) < epsilon.

Une question ou une suggestion ? Écrivez-nous.