本文へスキップ
にゃんこツール

浮動小数点(IEEE 754)ビット表示・変換ツール

10進数を入力すると、IEEE 754のfloat32(単精度)・float64(倍精度)で符号・指数部・仮数部がどうなるかをビット単位で表示します。0x付き16進やビット列を入力して数値に戻すこともでき、NaN・Infinity・-0・非正規化数にも対応します。0.1+0.2 のような式を入れると、計算結果の誤差の理由も確かめられます。ブラウザ内で処理され、入力内容がサーバーに送信されることはありません。整数の基数変換は 基数変換ツール をご利用ください。

🔒 ブラウザ内で完結・入力データはサーバーに送信されません

サンプル

■ 符号■ 指数部■ 仮数部

使い方

  1. 「ビット幅」でfloat32(単精度)かfloat64(倍精度)を選びます。
  2. 「値またはビット列」に10進数、0x付き16進、ビット列、または 0.1+0.2 のような式を入力します。
  3. 符号・指数部・仮数部の色分けと、正確な10進値、16進が表示されます。
  4. 「結果をコピー」で内容をまとめてコピーできます。

注意事項

  • 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と等しいと比較されますがビットは異なります。「値の種類」で判別できます。

このページをシェア

↑↓ 選択 Enter 開く Esc 閉じる