浮動小数点(IEEE 754)ビット表示・変換ツール
10進数を入力すると、IEEE 754のfloat32(単精度)・float64(倍精度)で符号・指数部・仮数部がどうなるかをビット単位で表示します。0x付き16進やビット列を入力して数値に戻すこともでき、NaN・Infinity・-0・非正規化数にも対応します。0.1+0.2 のような式を入れると、計算結果の誤差の理由も確かめられます。ブラウザ内で処理され、入力内容がサーバーに送信されることはありません。整数の基数変換は 基数変換ツール をご利用ください。
🔒 ブラウザ内で完結・入力データはサーバーに送信されません
使い方
- 「ビット幅」でfloat32(単精度)かfloat64(倍精度)を選びます。
- 「値またはビット列」に10進数、0x付き16進、ビット列、または 0.1+0.2 のような式を入力します。
- 符号・指数部・仮数部の色分けと、正確な10進値、16進が表示されます。
- 「結果をコピー」で内容をまとめてコピーできます。
注意事項
- 2進のビット列は、0b なしの場合はビット幅ぴったりの桁数(float32は32桁、float64は64桁)が必要です。0b を付けると上位の0を省略できます。空白・アンダースコアは無視します。
- 16進は0xを付けて入力してください。桁数が足りない場合は上位に0を補います。
- 式は 数値・演算子・数値 の2項(+ - * /)のみ対応します。float32を選んだときは、各オペランドと結果をfloat32に丸めて計算します。
- float32では、範囲外の値はInfinityに、極小の値は非正規化数または0に丸められます。
- 「正確な10進値」は、ビット列が表す値を2進数から厳密に展開したものです。0.1が正確に0.1にならないのはこの仕組みのためです。
- NaNは入力すると代表的なquiet NaN(float64は0x7FF8000000000000)になります。ビット列から入力すれば、他のNaNのビットパターンも確認できます。
用語解説
IEEE 754
浮動小数点数の標準規格です。値を「符号 × 1.仮数部 × 2^指数」の形で表します。float32は符号1bit・指数部8bit・仮数部23bit、float64は符号1bit・指数部11bit・仮数部52bitです。
バイアス付き指数
指数部に格納される値は、実効指数にバイアス(float32は127、float64は1023)を足したものです。これで負の指数も符号なし整数として保存できます。
非正規化数(サブノーマル)
指数部がすべて0の数です。先頭の暗黙のビットが1ではなく0になり、0に近い非常に小さな値を表現できます。
NaN / Infinity
指数部がすべて1の特殊値です。仮数部が0なら無限大、0以外ならNaN(Not a Number)です。仮数部の最上位ビットが1ならquiet NaN、0ならsignaling NaNです。
0.1+0.2 が 0.3 にならない理由
0.1も0.2も2進数では循環小数になり、有限のビット数で丸められた近似値として保存されます。その近似値同士の和をさらに丸めるため、0.30000000000000004 になります。
よくある質問
0.1+0.2 が 0.3 にならないのはなぜですか?
0.1と0.2は2進数では割り切れず、float64では少しずれた近似値で保存されます。足した結果をさらに丸めると0.30000000000000004になります。このツールで0.1+0.2を入力すると、結果のビット列と正確な10進値を確認できます。
float32とfloat64の違いは何ですか?
float32は32bit(符号1・指数部8・仮数部23)で有効桁数は約7桁、float64は64bit(符号1・指数部11・仮数部52)で約15〜17桁です。JavaScriptのNumberはfloat64です。
ビット列や16進から数値に戻すにはどう入力しますか?
16進は0x3FB999999999999Aのように0xを付けます。2進は、0bなしならビット幅ぴったり(float32は32桁、float64は64桁)、0b付きなら上位の0を省略できます。ビット幅の選択に合わせて解釈されます。
NaNや-0、非正規化数はどう表示されますか?
指数部がすべて1ならInfinityまたはNaN、すべて0で仮数部が0以外なら非正規化数です。-0は符号ビットだけが1のゼロで、0と等しいと比較されますがビットは異なります。「値の種類」で判別できます。
このページをシェア
