やまどり

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 を選ぶと、ビット列に丸め誤差が含まれることが視覚的に確認できます。

浮動小数点のビットを読む手順

  1. STEP 1調べたい10進数と32bitまたは64bitを選びます。
  2. STEP 2符号・指数部・仮数部に分かれたビット列を確認します。
  3. STEP 3必要に応じてビットを反転し、値がどう変化するか比較します。

具体的な利用例

0.1が2進数で有限桁にならない理由や、単精度と倍精度で丸め誤差が異なる様子を確認できます。教材だけでなく、通信データやバイナリログの値を調査する際にも利用できます。

結果を見るときの注意点

NaN、無限大、非正規化数には通常の数値と異なる規則があります。また、表示された10進値は読みやすく丸められる場合があるため、厳密な比較では16進表現や元のビット列を基準にしてください。

入力データの扱い

処理はこのブラウザ内で完結し、入力したテキストやファイルは変換・解析のために外部サーバーへ送信されません。共有端末を使う場合は、作業後に入力欄とクリップボードの内容も消去してください。