現代のコンピュータが使う浮動小数点数の規格「IEEE 754 単精度」。32 ビットを 符号 1 + 指数 8 + 仮数 23 に分けて値を表します。
IEEE 754 単精度とは、現代のコンピュータが浮動小数点数を扱うときに最もよく使う32 ビット規格のことです。多くのプログラミング言語の float 型・float32 型はこのフォーマットです。
値の式は次のとおりです(暗黙の 1 を補ったあとの計算):
・値 = (-1)S × 1.M × 2E - 127
・S: 符号部(1ビット、0=正 / 1=負)
・E: 指数部の保存値(8ビット、バイアス済み)
・M: 仮数部の小数部分(23ビット、暗黙の 1. は別途)
これまで個別に学んだ「符号部」「指数部」「仮数部」「ケチ表現」「バイアス表現」「正規化」がすべて1つの 32 ビット表現にまとめられた完成形──それが IEEE 754 単精度です。
| 位置 | ビット数 | 役割 | 具体例 (6.5 の場合) |
|---|---|---|---|
| bit 31 | 1 bit | 符号部 S | 0 (正) |
| bit 30-23 | 8 bit | 指数部 E (バイアス済み、+127) | 10000001 (=129, 実指数 +2) |
| bit 22-0 | 23 bit | 仮数部 M (1. を省略した小数部) | 10100000000000000000000 |
上のツールで「6.5」プリセットを試してみてください。32 ビット全体は 0 10000001 10100000000000000000000 となります。これを式に当てはめると (-1)⁰ × 1.625 × 2² = 6.5。
IEEE 754 単精度の主なスペック:
・正の最大値: 約 3.4 × 10³⁸
・正の最小値(正規化数): 約 1.18 × 10⁻³⁸
・10進精度: 約 7 桁
・負の値も同じ範囲(符号ビット 1)
特殊な値:
・±0: 全ビット 0(符号だけ違う 2 通り)
・±∞: 指数部が全て 1、仮数部が全て 0
・NaN(Not a Number): 指数部が全て 1、仮数部が 0 以外
・非正規化数: 指数部が全て 0、仮数部が 0 以外(極小値を表現)
上のツールで「0.1」を選んでみてください。0 01111011 10011001100110011001101 となります。十進 0.1 が二進では循環小数なので、ビット列の末尾で打ち切られた値が 0.1 のごく近似値として保存されています。これがプログラミングでよく見る「0.1 + 0.2 = 0.30000000000000004」の正体です。