IEEE 754とは?Float32・Float64の仕組みをわかりやすく解説
この記事の要点
- IEEE 754は、コンピュータで浮動小数点数を表すための標準的な形式です。
- Float32は1・8・23ビット、Float64は1・11・52ビットに分かれます。
- 通常の値は符号、指数、仮数を組み合わせて計算します。
IEEE 754とは何か
IEEE 754は、実数に近い値をコンピュータ上で扱うための浮動小数点数規格です。小数点の位置を固定せず、符号・指数・有効数字に分けることで、非常に小さい値から非常に大きい値まで限られたビット数で表現します。
よく使われる形式は、32ビットの単精度(Float32)と64ビットの倍精度(Float64)です。同じ10進数でも、形式によって精度や表現範囲が異なります。
Float32・Float64のビット構造
符号1 bit
指数8 bits
仮数23 bits
| 形式 | 符号部 | 指数部 | 仮数部 | bias |
|---|---|---|---|---|
| Float32 | 1 bit | 8 bits | 23 bits | 127 |
| Float64 | 1 bit | 11 bits | 52 bits | 1023 |
通常の値を求める計算式
指数部がすべて0でもすべて1でもない正規化数は、次の式で値を求めます。
(−1)符号 × (1 + 仮数) × 2指数部の値 − bias仮数部の先頭には通常、保存されていない1があるものとして計算します。これを暗黙の1(hidden bit)と呼びます。
例:Float32で1.0を表す
- 1.0は正の値なので符号ビットは
0です。 - 1.0は2進数で
1.0 × 2⁰なので実際の指数は0です。 - 指数部は0+127=127、2進数では
01111111です。 - 小数部分はないため仮数部は23個の0です。
結果
ビット列:0 01111111 00000000000000000000000
HEX:3F800000
ゼロ・Infinity・NaNなどの特殊値
指数部がすべて0またはすべて1の場合は、通常の計算式とは異なる意味を持ちます。
| 指数部 | 仮数部 | 意味 |
|---|---|---|
| すべて0 | すべて0 | +0 または −0 |
| すべて0 | 0以外 | 非正規化数 |
| すべて1 | すべて0 | +Infinity または −Infinity |
| すべて1 | 0以外 | NaN |
IEEE 754が使われる場面
- プログラミング言語のfloat・double
- ゲームや画像処理の座標・色・行列計算
- PLC、Modbus、センサー、バイナリ通信
- 科学技術計算や機械学習
よくある質問
Float32と単精度は同じですか?
はい。Float32は32ビットの単精度浮動小数点数を指します。
Float64と倍精度は同じですか?
はい。Float64は64ビットの倍精度浮動小数点数で、Float32より多くの有効桁を持ちます。
仮数部の暗黙の1は常に使いますか?
いいえ。正規化数では使いますが、指数部がすべて0の非正規化数では先頭を0として計算します。
IEEE 754ですべての小数を正確に表せますか?
表せません。0.1のように2進数で有限桁にならない値は、最も近い表現へ丸められます。