IEEE 754 浮動小数点ビット分解 (binary16 / binary32 / binary64)
10 進数を IEEE 754 浮動小数点 (binary16 / binary32 / binary64) のビット列・16 進表現に分解し、 符号・指数・仮数の内訳と実際に表現される値・誤差を可視化するツール。 「0.1 + 0.2 が 0.3 にならない」 理由が一目で分かる。 16 進・ビット列からの逆引きも対応。
10 進数を IEEE 754 浮動小数点 (binary16 / binary32 / binary64) のビット列・16 進表現に分解し、 符号・指数・仮数の内訳と実際に表現される値・誤差を可視化するツール。 「0.1 + 0.2 が 0.3 にならない」 理由が一目で分かる。 16 進・ビット列からの逆引きも対応。
このツールは、 10 進数を IEEE 754 浮動小数点 (binary16 / binary32 / binary64) のビット列と 16 進表現に分解し、 符号・指数・仮数の内訳を色分けで可視化します。 逆に 16 進やビット列から 10 進値を復元することもできます。
「0.1 + 0.2 = 0.30000000000000004」 のような浮動小数点の不思議な挙動は、 ビットを直接見ると一目で理解できます。 入力した 10 進値と、 floating-point で復元される値の絶対誤差も自動表示するので、 「この値は IEEE 754 で正確に表現できるか」 を即座に確認できます。
IEEE 754 が定める主要な精度:
同じ「0.1」 でも精度が下がると誤差が大きくなり、 binary16 で 約 2.44×10⁻⁵、 binary32 で 約 1.49×10⁻⁹、 binary64 で 約 5.55×10⁻¹⁸ になります (本ツールで実測可能)。
10 進で「有限」 な 0.1 は、 2 進では 0.000110011 0011 0011… と循環無限小数になります (1100 が永遠に繰り返す)。 これを binary64 の 52 ビット仮数に詰めるとき末尾を丸める必要があり、 ここで初期誤差が入ります。
0.3 hex = 3FD3333333333333
0.1 + 0.2 hex = 3FD3333333333334 ← 末尾 1 bit 違い
差は約 5.55×10⁻¹⁷。 「ほぼ等しい」 が「ビット単位で等しくはない」 ので === 比較は false を返します。 詳しい解説は 「0.1 + 0.2 が 0.3 にならない本当の理由」 記事へ。
=== は危険。 Math.abs(a - b) < ε や Number.EPSILON 経由の許容比較を使うdecimal.DecimalBigInt、 JSON では文字列化NaN === NaN は false (IEEE 754 仕様)。 Number.isNaN() を使う進数変換ツール
2進数・8進数・10進数・16進数を相互変換。リアルタイム同時表示、ビット数計算、プレフィックス自動判別。BigInt対応で64bit超の大きな数値も変換可能。
ハッシュ生成ツール
テキストからMD5・SHA-1・SHA-256・SHA-384・SHA-512のハッシュ値を即時生成。HEX・Base64形式出力、全アルゴリズム一括生成に対応。
chmod 計算機 (8 進 ↔ rwx ↔ ugo 相互変換)
Unix/Linux のファイルパーミッションを 8 進数 (755 等) ↔ シンボリック (rwxr-xr-x) ↔ ugo 表記 (u=rwx,g=rx,o=rx) で相互変換するツール。 setuid / setgid / sticky の特殊ビットも対応、 755 / 644 / 600 / 1777 などよく使う例のプリセット付き。