什麼是 IEEE 754 浮點數轉換器?
這個工具能將 32 位元的 16 進位值解碼成它在 IEEE 754 單精度標準下所代表的實數——也就是 C、Java 以及大多數現代硬體中 float 型別所採用的格式。只要輸入八個 16 進位數字,計算機就會把它拆成構成浮點數的三個欄位:1 個符號位(sign)、8 個指數位(exponent)與 23 個尾數位(mantissa/fraction),再重新組合成一個十進位數值。
使用方式
以 16 進位輸入這個 32 位元值(例如 40490FDB)。前面的「0x」可加可不加,非 16 進位的字元會自動忽略。若輸入不足 8 位,系統會在左側補零。結果會顯示十進位數值,並列出解碼後的符號位、儲存指數、去偏指數與尾數,方便你自行對照驗證整個位元配置。
公式說明
對於正規化數值(normal number),其值為 $$\text{Value} = (-1)^{s} \times \left(1 + \frac{m}{2^{23}}\right) \times 2^{(e - 127)}$$ 其中 127 是單精度的指數偏移量(bias)。「1 +」代表正規化二進位數固定隱含的前導位元。當儲存指數 \(e\) 為 0 時,該數屬於非正規數(subnormal):隱含的前導 1 會消失,指數則固定為 -126。當 \(e\) 為 255 時,數值代表無限大(尾數為 0)或非數值 NaN。
實例演算
以 40490FDB 為例。換成二進位後,符號位為 0(正數),指數欄位為 10000000 = 128,因此去偏指數為 \(128 - 127 = 1\)。尾數位的值為 4788187,相當於分數 \(4788187/8388608 \approx 0.5707964\)。最終數值為 $$(1 + 0.5707964) \times 2^{1} \approx 3.14159274$$ 也就是圓周率 π 在單精度下最接近的近似值。
常見問題
為什麼結果不是我預期的那個確切數字?單精度僅有約 7 位十進位有效位數,所以許多十進位數值都會四捨五入到最接近、可被表示的浮點數。
那雙精度(64 位元)呢?本工具處理的是 32 位元單精度。雙精度(double)使用 11 個指數位、52 個尾數位,偏移量則為 1023。
7FC00000 會得到什麼?那是一個 NaN(指數全為 1、尾數不為 0),並非有限數值。