IEEE 754における無限大の表現

IEEE 754が正と負の無限大をどのように表現するかを学びます。ビットパターン、計算で無限大がいつ発生するか、無限大を含む算術規則を理解しましょう。

Special Values

Decimal Value

Infinity

Float32 Hex

0x7F800000

Float64 Hex

0x7FF0000000000000

詳細な説明

IEEE 754は正と負の無限大を表現するために特定のビットパターンを使用します。これらの特殊値はオーバーフローやゼロ除算から生じ、明確に定義された算術規則に従います。

無限大のビットパターン:

Float32 Hex Float64 Hex バイナリパターン
+Infinity 0x7F800000 0x7FF0000000000000 符号=0、指数=すべて1、仮数=すべて0
-Infinity 0xFF800000 0xFFF0000000000000 符号=1、指数=すべて1、仮数=すべて0

識別の鍵: すべての指数ビットが1で、すべての仮数ビットが0。仮数ビットが1つでもセットされていれば、値はNaNになります。

無限大が発生する場合:

  • ゼロ除算: 1.0 / 0.0 = +Infinity-1.0 / 0.0 = -Infinity
  • オーバーフロー: 結果が最大の表現可能な有限値を超えた場合
  • 明示的な代入: Infinity-Infinity、Pythonのfloat('inf')

0.0 / 0.0はInfinityではなくNaNを生成することに注意してください。

無限大の算術:

演算 結果
x + Infinity Infinity(有限のxの場合)
Infinity + Infinity Infinity
Infinity - Infinity NaN
Infinity * 0 NaN
Infinity * Infinity Infinity
x / Infinity 0(有限のxの場合)
Infinity / Infinity NaN

比較の動作:

  • Infinity > xは任意の有限xに対してtrue
  • -Infinity < xは任意の有限xに対してtrue
  • Infinity === Infinitytrue
  • isFinite(Infinity)false

無限大が存在する理由:

オーバーフロー時にクラッシュする代わりに、IEEE 754は無限大を返し、計算を続行させます。これは例外をスローするよりも望ましいことが多く、下流のコードで無限大をチェックして適切に処理できます。

ユースケース

無限大の表現を理解することは、堅牢な数値アルゴリズムの実装、除算やオーバーフローのエッジケースの処理、科学計算や金融計算での予期しない結果のデバッグに重要です。

試してみる — IEEE 754 Inspector

フルツールを開く