Qu'est-ce qu'un nombre à virgule flottante anormal ?
Dans la représentation à virgule flottante IEEE 754, les nombres anormal sont un type spécial de nombre qui représente des valeurs très proches de zéro. Ils sont utilisés pour empêcher le dépassement de capacité, qui se produit lorsqu'un nombre est trop petit pour être représenté comme un nombre à virgule flottante normal.
Bases de l'IEEE 754
IEEE 754 est un format standardisé pour représenter les nombres à virgule flottante. Un nombre IEEE 754 simple précision de 32 bits est représenté comme suit :
Convention des bits principaux
Dans IEEE 754, tous les nombres non nuls ont un 1 en tête en binaire. C'est ce qu'on appelle la convention des bits principaux. Cependant, cela peut entraîner une perte de précision pour les nombres proches de zéro.
Nombres subnormaux
Pour résoudre ce problème, des nombres subnormaux ont été introduits. Lorsque l’exposant est 0 et que la fraction est non nulle, le nombre est considéré comme inférieur à la normale. Dans ce cas, la convention des bits de tête est ignorée et la valeur réelle représentée est :
0.fraction * 2^(-126)
Cela permet la représentation de très petits nombres qui autrement seraient perdus en cas de dépassement inférieur.
Plage de nombres anormaux
Les nombres anormaux ont une plage de nombres beaucoup plus petite que les nombres à virgule flottante normaux. Le plus petit nombre sous-normal positif est :
0.000002 * 2^(-126)
et le plus grand nombre sous-normal est :
0.FFFFFE * 2^(-126)
Dénormalisation
Le processus de représentation d'un Un nombre décimal au format binaire en tant que nombre anormal est appelé dénormalisation. Lorsqu'un nombre est dénormalisé, il est décalé vers la gauche jusqu'à ce qu'il ne reste qu'un seul bit « 1 » à gauche du point binaire.
Mise en œuvre
Les subnormaux sont implémenté différemment sur différentes architectures matérielles. Par exemple :
Avantages des sous-normales
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!