Les flottants, la norme IEEE 754, impossible exactitude.
1. Les bases de la norme IEEE 754⚓︎
La norme IEEE 754 définit la représentation des nombres à virgule flottante en informatique. Elle est utilisée par la plupart des processeurs et langages de programmation modernes. Cette norme permet de représenter des nombres réels de manière approchée, en utilisant une notation scientifique binaire.
1.1. Structure d’un flottant⚓︎
Un nombre flottant est généralement représenté sur 32 bits (simple précision) ou 64 bits (double précision) :
-
1 bit de signe : 0 pour positif, 1 pour négatif.
-
Exposant : codé sur un certain nombre de bits, souvent avec un biais pour représenter des exposants négatifs.
-
Mantisse (ou significande) : représente les chiffres significatifs du nombre, normalisée entre 1 et 2 (pour les nombres normalisés).
2. Écriture des nombres flottants⚓︎
En binaire, un nombre flottant est de la forme :
(-1)^signe Ă— mantisse Ă— 2^(exposant - biais)
Exemple :
-
Le nombre 5,25 en décimal s’écrit 101,01 en binaire.
-
En flottant, il serait représenté avec un exposant et une mantisse adaptés.
3. Impossibilité d’exactitude entre décimal et binaire⚓︎
La plupart des nombres décimaux ne peuvent pas être représentés exactement en binaire, car les bases 10 et 2 ne sont pas compatibles. Par exemple :
-
0,1 en décimal s’écrit 0,00011001100110011... en binaire (périodique).
-
Cela entraîne des erreurs d’arrondi lors des calculs, surtout après plusieurs opérations.
4. Le problème des missiles Patriot à Dhahran (1991)⚓︎
Pendant la guerre du Golfe, un système de missile Patriot a échoué à intercepter un missile Scud irakien à Dhahran, causant la mort de 28 soldats américains. La cause :
-
Le système utilisait un compteur de temps en virgule flottante 24 bits.
-
L’accumulation d’erreurs d’arrondi sur 100 heures de fonctionnement a conduit à un décalage de 0,34 seconde dans le calcul de la trajectoire.
-
Résultat : le missile Scud n’a pas été intercepté.
5. Exemple de conversion : 101,0101 en décimal⚓︎
Pour convertir le nombre binaire 101,0101 en décimal :
| Bit | Valeur | Puissance de 2 | Résultat |
|---|---|---|---|
| 1 | 1 | 2^2 | 4 |
| 0 | 0 | 2^1 | 0 |
| 1 | 1 | 2^0 | 1 |
| . | . | . | . |
| 0 | 0 | 2^-1 | 0 |
| 1 | 1 | 2^-2 | 0,25 |
| 0 | 0 | 2^-3 | 0 |
| 1 | 1 | 2^-4 | 0,0625 |
Total = 4 + 1 + 0,25 + 0,0625 = 5,3125