AZ Tools

IEEE 754 浮動小数点変換 (32 & 64ビット)

変換

浮動小数点数は符号ビット、バイアス付き指数、仮数(fraction)として格納され、入力した値と実際に格納される値の差が数多くの丸めバグの原因になります。この変換器は任意の十進数を float32(単精度、1+8+23 ビット、バイアス 127)と float64(倍精度、1+11+52 ビット、バイアス 1023)の両方で正確な IEEE 754 表現として表示します:色分けされたビット列、hex ワード、バイアスなしの指数と仮数、値のカテゴリ(正規・非正規・ゼロ・無限・NaN)、そして丸め後に実際に格納される値。逆方向にも動作します — 8 桁または 16 桁の hex ワードを貼り付けると、復号された数値と完全な内訳が得られます。シリアライズ、シェーダや組み込みコード、GPU バッファのデバッグや「なぜ 0.1 + 0.2 != 0.3 なのか」という疑問に便利です。特殊入力 Infinity、-Infinity、NaN も受け付けます。すべてローカルで動作し、アップロードされません。

float32 (single)正規
00111101110011001100110011001101
0x3dcccccd
符号
0 (+)
指数
123 (2^-4)
有効数字
1.10011001100110011001101
格納値
0.10000000149011612

丸められました — float32 はこの値を正確に格納できません。

float64 (double)正規
0011111110111001100110011001100110011001100110011001100110011010
0x3fb999999999999a
符号
0 (+)
指数
1019 (2^-4)
有効数字
1.1001100110011001100110011001100110011001100110011010
格納値
0.1
符号 指数 仮数

float32 = 符号 1 + 指数 8 + 仮数 23 ビット;float64 = 1 + 11 + 52。指数バイアスは 127 / 1023。

使い方

  1. 「十進数 → ビット」で数値(例:0.1、-3.14、1e10、Infinity、NaN)を入力し float32・float64 の両方を確認。
  2. 符号 / 指数 / 仮数の分割、hex ワード、格納値を読みます。float32 が丸めた場合は注記が表示されます。
  3. 「ビット → 十進数」に切り替え、精度を選び、hex ワードを貼り付けて数値に復号。

よくある質問

格納値が入力と異なるのはなぜ?
ほとんどの十進小数は二進浮動小数点で正確に表現できません。ツールは最も近い表現可能な値を表示します — 例えば float32 の 0.1 は実際には 0.100000001490116119384765625 です。格納された float32 値が入力と異なるときに丸め注記が表示されます。float64 は JavaScript がすでに使う値と同じです。
色分けされたビットの意味は?
赤は符号ビット(0 正、1 負)、青は指数(バイアス付き:2 の累乗を得るには float32 は 127、float64 は 1023 を引く)、緑は仮数(fraction)です。正規数の有効数字は 1.仮数、非正規数は最小指数で 0.仮数です。
無限・NaN・ゼロはどう表示される?
指数が全て 1 で仮数が 0 なら ±無限;指数が全て 1 で仮数が非ゼロなら NaN;指数と仮数が全て 0 なら ±ゼロ(-0 の符号ビットが区別される);指数が全て 0 で仮数が非ゼロなら非正規数です。各カードにカテゴリが表示されます。
復号はどの hex 形式を期待しますか?
生ビットのビッグエンディアン hex です:float32 は 8 桁(例:3f800000 = 1.0)、float64 は 16 桁(例:3ff0000000000000 = 1.0)。先頭の 0x と空白は無視され、短い入力は左側が 0 で埋められます。

関連ツール