Les nombres à virgule flottante sont organisés selon la norme IEEE 754. En simple précision, le format se compose de 1 bit pour le signe, 8 bits pour l'exposant et 23 bits pour la fraction. L'exposant est biaisé de -127, donc 0 représente 2^-126 et 1 représente 2^-125.
La « convention des bits de tête » suppose que chaque nombre sauf 0,0 commence par un 1 en binaire. Cela évite de perdre un peu de précision pour le premier chiffre. Cependant, cela crée une exception pour 0,0, qui a à la fois des bits d'exposant et de fraction égaux à 0.
En conséquence, le plus petit nombre non nul pouvant être représenté est 1,0 × 2^-126. Pour représenter des nombres encore plus petits, les ingénieurs ont introduit des nombres anormaux, qui ont un bit de tête de 0 et un exposant fixe de -126.
Le plus grand nombre anormal est 0,FFFFFE × 2^-126, ce qui est très proche au plus petit nombre non anormal. Le plus petit nombre anormal non nul est 0,000002 × 2^-126, ce qui est encore plus proche de 0,0.
Les nombres anormaux sont un compromis entre précision et longueur de représentation. Par exemple, le plus petit subnormal non nul a une précision de seulement 1 bit, donc le diviser par 2 donne exactement 0,0.
Dans une visualisation, les nombres subnormaux doublent la longueur de la plage de l'exposant 0 et divisent par deux la nombre de points dans cette fourchette par rapport à un système sans anomalies. Cela entraîne certaines lacunes dans l'espace numérique représentable.
En C, le type de données float représente les nombres à virgule flottante IEEE 754 en simple précision. Les nombres anormaux peuvent être identifiés à l'aide de la fonction isnormal(), qui renvoie false pour les nombres anormaux et true pour les nombres normaux.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!