« Nombres flottants » : différence entre les versions

De knowledge
Aller à la navigation Aller à la recherche
(Page créée avec «  = Formats de nombres flottants à taille variable en informatique = == Flottants étendus == === Double précision étendue (80 bits) === Utilisé principalement par les processeurs x87, ce format offre une précision supérieure à la double précision standard (64 bits). Il est utile dans les calculs scientifiques nécessitant une grande exactitude. == Types dynamiques == === Python et bibliothèques comme decimal, mpmath === Python propose le type `float` b... »)
 
mAucun résumé des modifications
 
Ligne 1 : Ligne 1 :


= Formats de nombres flottants à taille variable en informatique =
= Représentation des nombres flottants en informatique=
 
==Définition des nombres flottants==
== Flottants étendus ==
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.
=== Double précision étendue (80 bits) ===
===Utilité et approximation===
Utilisé principalement par les processeurs x87, ce format offre une précision supérieure à la double précision standard (64 bits). Il est utile dans les calculs scientifiques nécessitant une grande exactitude.
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 ==
== Types dynamiques ==
La norme IEEE 754 définit les formats de représentation des nombres flottants en informatique.
=== Python et bibliothèques comme decimal, mpmath ===
===Format 32 bits (float) ===
Python propose le type `float` basé sur IEEE 754 double précision, mais permet aussi des types à précision arbitraire via les bibliothèques `decimal` (précision fixe configurable) et `mpmath` (précision flottante illimitée).
Composé de 1 bit de signe, 8 bits d'exposant biaisé, et 23 bits de mantisse.
 
===Format 64 bits (double)===
== Formats compacts ou adaptatifs ==
Composé de 1 bit de signe, 11 bits d'exposant biaisé, et 52 bits de mantisse.
=== bfloat16 ===
===Structure : signe, exposant biaisé, mantisse===
Format 16 bits utilisé dans l'apprentissage automatique. Il conserve 8 bits d'exposant comme le float32, mais réduit la précision de la mantisse.
La valeur est calculée comme : (-1)^s × 1.mantisse × 2^(exposant - biais)
 
===Exemple de codage===
=== Posits ===
*5.75 → Binaire : 101.11 → Normalisé : 1.0111 × 2^2
Format alternatif aux IEEE 754, proposé par John Gustafson. Il offre une précision adaptative selon la valeur représentée, avec une taille totale variable.
* 6.25 → Binaire : 110.01 → Normalisé : 1.1001 × 2^2
 
==Codage biaisé de l'exposant==
== Formats personnalisés ==
L'exposant est stocké avec un biais pour éviter les valeurs négatives.
=== FPGA, GPU, compression ===
=== Comparaison avec le complément à deux===
Les architectures spécialisées comme les FPGA ou GPU peuvent utiliser des formats flottants personnalisés pour optimiser la performance ou la compression, comme des floats 24 bits ou des représentations logarithmiques.
Contrairement au complément à deux, le codage biaisé permet un tri lexicographique des flottants.
 
===Plage d'exposants===
== Tableau récapitulatif ==
*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==
{| class="wikitable"
{| class="wikitable"
! Format         !! Taille     !! Usage principal
!Format!!Taille!!Usage principal
|-
|-
| IEEE 754 float || 32 bits     || Standard CPU
|IEEE 754 float||32 bits||Standard CPU
|-
|-
| IEEE 754 double|| 64 bits     || Calculs précis
|IEEE 754 double||64 bits||Calculs précis
|-
|-
| Extended       || ≥80 bits   || Calcul scientifique, x87
|Extended||≥80 bits||Calcul scientifique, x87
|-
|-
| bfloat16       || 16 bits     || IA, réseaux de neurones
|bfloat16||16 bits||IA, réseaux de neurones
|-
|-
| Posit         || Variable   || Recherche, calculs alternatifs
|Posit||Variable||Recherche, calculs alternatifs
|-
|-
| Decimal/MPFR   || Variable   || Haute précision, finance, science
|Decimal/MPFR||Variable||Haute précision, finance, science
|}
|}

Version actuelle datée du 31 août 2025 à 15:52

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