Nombres flottants
Représentation des nombres flottants en informatique
Définition des nombres flottants
Les nombres flottants permettent de représenter des valeurs réelles avec une partie entière et une partie fractionnaire. Ils sont utiles pour modéliser des quantités continues comme les mesures physiques.
Utilité et approximation
Les nombres flottants permettent de représenter une large gamme de valeurs, mais avec une précision limitée. Ils sont une approximation des réels, ce qui peut entraîner des erreurs d'arrondi.
Norme IEEE 754
La norme IEEE 754 définit les formats de représentation des nombres flottants en informatique.
Format 32 bits (float)
Composé de 1 bit de signe, 8 bits d'exposant biaisé, et 23 bits de mantisse.
Format 64 bits (double)
Composé de 1 bit de signe, 11 bits d'exposant biaisé, et 52 bits de mantisse.
Structure : signe, exposant biaisé, mantisse
La valeur est calculée comme : (-1)^s × 1.mantisse × 2^(exposant - biais)
Exemple de codage
- 5.75 → Binaire : 101.11 → Normalisé : 1.0111 × 2^2
- 6.25 → Binaire : 110.01 → Normalisé : 1.1001 × 2^2
Codage biaisé de l'exposant
L'exposant est stocké avec un biais pour éviter les valeurs négatives.
Comparaison avec le complément à deux
Contrairement au complément à deux, le codage biaisé permet un tri lexicographique des flottants.
Plage d'exposants
- Float : biais 127 → exposants de -126 à +127
- Double : biais 1023 → exposants de -1022 à +1023
Cas spéciaux
La norme IEEE 754 définit des représentations pour :
NaN, Infini, Zéro signé
- NaN : Not a Number (résultat indéfini)
- ±Inf : dépassement de capacité
- ±0 : zéro avec signe distinct
Limitations
Précision limitée
La mantisse fixe limite le nombre de chiffres significatifs.
Erreurs d'arrondi
Les opérations peuvent introduire des erreurs cumulatives.
Comparaisons piégeuses
Deux valeurs proches peuvent ne pas être égales à cause de l'arrondi.
Formats à taille variable
Flottants étendus (80 bits)
Utilisés par les processeurs x87 pour une précision accrue.
Types dynamiques (Python, decimal, mpmath)
Python permet des flottants à précision arbitraire via `decimal` et `mpmath`.
bfloat16
Format 16 bits utilisé en IA, avec 8 bits d'exposant et 7 bits de mantisse.
Posits
Format alternatif à précision adaptative proposé par John Gustafson.
Formats personnalisés (FPGA, GPU)
Utilisés pour optimiser les performances ou la mémoire.
Tableau récapitulatif des formats
| Format | Taille | Usage principal |
|---|---|---|
| IEEE 754 float | 32 bits | Standard CPU |
| IEEE 754 double | 64 bits | Calculs précis |
| Extended | ≥80 bits | Calcul scientifique, x87 |
| bfloat16 | 16 bits | IA, réseaux de neurones |
| Posit | Variable | Recherche, calculs alternatifs |
| Decimal/MPFR | Variable | Haute précision, finance, science |