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に対してtrueInfinity === InfinityはtrueisFinite(Infinity)はfalse
無限大が存在する理由:
オーバーフロー時にクラッシュする代わりに、IEEE 754は無限大を返し、計算を続行させます。これは例外をスローするよりも望ましいことが多く、下流のコードで無限大をチェックして適切に処理できます。
ユースケース
無限大の表現を理解することは、堅牢な数値アルゴリズムの実装、除算やオーバーフローのエッジケースの処理、科学計算や金融計算での予期しない結果のデバッグに重要です。