Maison > développement back-end > C++ > Pourquoi avons-nous des nombres à virgule flottante anormaux ?

Pourquoi avons-nous des nombres à virgule flottante anormaux ?

DDD
Libérer: 2024-11-11 07:42:03
original
313 Les gens l'ont consulté

Why Do We Have Subnormal Floating Point Numbers?

Nombres à virgule flottante anormaux

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal