IEEE 754 浮動小数点コンバーターとは?
このツールは、32ビットの16進数を IEEE 754 単精度規格に基づいて実数へとデコードします。これは C 言語や Java の float 型、そして現代のほとんどのハードウェアで採用されている形式です。8桁の16進数を入力すると、浮動小数点数を構成する3つのフィールド(符号ビット1ビット、指数部8ビット、仮数部(小数部)23ビット)に分解し、それらを再構成して10進数の値を算出します。
使い方
32ビットの値を16進数で入力してください(例:40490FDB)。先頭の「0x」は付けても付けなくても構いません。16進数以外の文字は無視されます。8桁に満たない場合は、左側がゼロで埋められます。結果には10進数の値に加えて、デコードされた符号、格納された指数(バイアス付き)、バイアスを除いた指数、仮数部が表示されるので、ビット構成をご自身で確認できます。
計算式の解説
正規化数の場合、値は $$\text{Value} = (-1)^{s} \times \left(1 + \frac{m}{2^{23}}\right) \times 2^{(e - 127)}$$ で求められます。この 127 は単精度における指数のバイアス値です。「1 +」の部分は、正規化された2進数が常に持つ暗黙の先頭ビット(ケチ表現)を反映しています。格納された指数 e が 0 のときは非正規化数となり、暗黙の先頭の1は存在せず、指数は -126 に固定されます。e が 255 のときは、仮数部が0なら無限大、それ以外なら NaN(非数)を表します。
計算例
40490FDB を例にとってみましょう。2進数で見ると符号は 0(正)、指数部フィールドは 10000000 = 128 なので、バイアスを除いた指数は \(128 - 127 = 1\) となります。仮数部のビットは 4788187 に相当し、小数部は \(4788187/8388608 \approx 0.5707964\) です。したがって値は $$(1 + 0.5707964) \times 2^{1} \approx 3.14159274$$ となり、これは円周率 π に最も近い単精度の近似値です。
よくある質問
期待した数値とぴったり一致しないのはなぜ? 単精度の有効精度は10進数で約7桁しかありません。そのため、多くの10進数値は表現可能な最も近い浮動小数点数に丸められます。
倍精度(64ビット)はどうなりますか? このツールは32ビットの単精度に対応しています。倍精度では指数部が11ビット、仮数部が52ビット、バイアスが1023になります。
7FC00000 は何になりますか? これは NaN(指数部がすべて1で仮数部が非ゼロ)であり、有限の数ではありません。