Introduction à la programmation en assembleur (processeurs 64 bits de la famille 80x86)
11.2. La norme IEEE 754

Dans cette norme, les nombres sont représentés en plusieurs parties : le signe, l' exposant et la mantisse . C'est la représentation que nous adoptons naturellement en base décimale quand nous écrivons : -1234.10-9. Or, -1234.10-9 peut s'écrire aussi -12340.10-10 ou -123,4.10-8 . Dans la première écriture, la mantisse a une taille de 4 chiffres et l'exposant s'écrit avec 1 chiffre, dans le 2ème cas la mantisse a une taille de 5 chiffres et l'exposant s'écrit avec 2 chiffres, etc.

Explication

Pour simplifier les choses et gagner de la précision à taille mémoire constante, nos nombres seront normalisés à chaque fois que cela sera possible : notre mantisse aura toujours en base binaire la forme de « 1 » « virgule » « fraction binaire » . Notre exposant sera négatif pour les valeurs inférieures à 0 et positif ou nul pour les valeurs supérieures ou égales à 1. Cette normalisation n'est bien entendu plus possible lorsque nous atteignons les bornes supérieures ou inférieures de l'exposant.

Lorsque nous atteignons la limite inférieure de l'exposant, c'est-à-dire lorsque notre valeur (positive ou négative) est très proche de 0, nous dirons que le nombre est dénormalisé. L'exposant prendra la valeur 0 et la mantisse aura la forme « 0 » « virgule » « fraction binaire ».

Lorsque nous dépassons la limite supérieure de l'exposant, notre nombre prendra une valeur qui symbolise +infini ou -infini.

Après une opération invalide dans les réels (racine d'un nombre négatif, division par 0), le résultat aura également une valeur remarquable.

On peut voir ci-dessous la représentation 32 bits des nombres à virgule flottante. L'exposant (entier signé) n'est pas représenté en complément à 2 mais sous la forme biaisée : Sur 8 bits, la valeur biaisée 127 correspond au zéro (non-biaisé). Les valeurs biaisées qui vont de 1 à 126 correspondent aux valeurs non-biaisées de -126 à -1 et les valeurs biaisées qui vont de 128 à 254 correspondent aux valeurs non-biaisées de 1 à 126.