浮動小数点数は、IEEE 754 標準に従って編成されます。単精度の場合、形式は符号に 1 ビット、指数に 8 ビット、小数部に 23 ビットで構成されます。指数には -127 のバイアスがかかっているため、0 は 2^-126 を表し、1 は 2^-125 を表します。
「先頭ビット規則」では、0.0 を除くすべての数値が 2 進数の 1 で始まると想定しています。これにより、先頭の桁の精度ビットの無駄が回避されます。ただし、指数ビットと小数ビットの両方が 0 に等しい 0.0 の例外が作成されます。
その結果、表現できる最小の非ゼロ数値は 1.0 × 2^-126 になります。さらに小さい数値を表すために、エンジニアは非正規数を導入しました。この数値は、先頭ビットが 0 で、指数が -126 に固定されています。
最大の非正規数は 0.FFFFFE × 2^-126 で、これは非常に近い値です。最小の非正規数に変換します。ゼロ以外の最小の非正規数は 0.000002 × 2^-126 で、これは 0.0 にさらに近づきます。
非正規数は、精度と表現長の間のトレードオフです。たとえば、ゼロ以外の最小の非正規数の精度は 1 ビットのみであるため、それを 2 で割ると正確に 0.0 になります。
ビジュアライゼーションでは、非正規数は指数 0 の範囲の長さを 2 倍にし、その範囲を半分にします。非正規のないシステムと比較した、その範囲内のポイントの数。これにより、表現可能な数値空間にいくつかのギャップが生じます。
C では、float データ型は単精度 IEEE 754 浮動小数点数を表します。非正規数は isnormal() 関数を使用して識別できます。この関数は非正規数の場合は false を返し、正規の数の場合は true を返します。
以上が非正規浮動小数点数が存在するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。