やまどり

IEEE 754 浮動小数点ビット表示

浮動小数点数を符号・指数部・仮数部のビット列で可視化します。ビットをクリックして反転できます。

ビット列(クリックで反転)

符号(1 bit)指数部(8 bits)仮数部(23 bits)
HEX: 40490FDB
数値
3.141593
正規化数(Normal)
符号ビット
0
正(+)
指数部
10000000
生値 128 → 偏りなし 1(バイアス 127
仮数部
1001001000011111
+0.570796 (小数部分)
= (-1)^0 × (1 + 0.570796) × 2^(128 - 127) = 3.141593

IEEE 754 浮動小数点数について

IEEE 754 は、コンピュータで浮動小数点数を表現するための国際標準規格です。 C 言語の float(32bit)や double(64bit)、Python の float(内部は 64bit)はすべてこの規格に従います。

32bit 単精度(float)の構造

  • 符号ビット(1 bit): 0 = 正、1 = 負
  • 指数部(8 bit): 生値 − 127 = 実際の指数(バイアス表現)
  • 仮数部(23 bit): 暗黙の 1. を加えた小数部分

64bit 倍精度(double)の構造

  • 符号ビット(1 bit)
  • 指数部(11 bit): バイアス 1023
  • 仮数部(52 bit)

特殊な値

  • ±0: 指数部・仮数部がすべて 0(符号のみ異なる)
  • ±∞(無限大): 指数部がすべて 1・仮数部がすべて 0
  • NaN(非数): 指数部がすべて 1・仮数部が非ゼロ
  • 非正規化数: 指数部がすべて 0・仮数部が非ゼロ(0 に近い極小値)

0.1 が正確に表現できない理由

2 進数では 0.1 を有限のビット列で表現できません(1/3 が 10 進数で 0.333... と循環するのと同じ理由)。 そのため 0.1 + 0.2 = 0.30000000000000004 のような誤差が生じます。このツールでプリセットの 0.1 を選ぶと、ビット列に丸め誤差が含まれることが視覚的に確認できます。