IEEE 754の16進数を浮動小数点数へ変換する方法|HEX解析

この記事の要点

値をすぐに変換・確認したい方へ

IEEE 754変換ツールで符号・指数・仮数を分解できます。

IEEE 754変換ツールを使う

Float32のHEXを解析する手順

  1. 8桁のHEXを32ビットの2進数へ変換します。
  2. 先頭1ビット、次の8ビット、残り23ビットへ分けます。
  3. 指数部からbias 127を引きます。
  4. 仮数部を1.fの形へ戻します。
  5. (−1)ˢ × 1.f × 2ⁿで値を計算します。

例1:3F800000を解析する

HEXを2進数へ変換すると、次の32ビットになります。

3F800000 = 00111111100000000000000000000000
0
01111111127
00000000000000000000000仮数0
計算結果

1 × 1.0 × 2⁰ = 1.0

例2:C0200000を解析する

C0200000 = 1 10000000 01000000000000000000000
計算結果

−1 × 1.25 × 2¹ = −2.5

指数部がすべて0・すべて1の場合

指数部が0または255の場合は通常の正規化数ではありません。ゼロ、非正規化数、Infinity、NaNとして解釈します。

指数仮数結果
00±0
00以外非正規化数
2550±Infinity
2550以外NaN

エンディアンに注意する

3F800000は数値としてのBig Endian表記です。同じFloat32の1.0でも、Little Endianのメモリや通信データではバイト列が00 00 80 3Fになる場合があります。

よくある原因

HEXが正しいのに値が大きく異なる場合は、バイト順だけでなく、16ビットワード単位の入れ替えも確認してください。

ツールで各フィールドを確認する

手計算では4ビットの写し間違いや指数の引き忘れが起きやすいため、最後にIEEE 754変換ツールへHEXを入力し、符号・指数・仮数を照合してください。

よくある質問

3F800000はFloat32でいくつですか?

1.0です。符号0、指数127、仮数0なので1×1.0×2の0乗になります。

C0200000はFloat32でいくつですか?

−2.5です。符号1、実際の指数1、有効数字1.25として計算します。

HEXは必ず8桁ですか?

Float32は32ビットなので通常8桁、Float64は64ビットなので通常16桁のHEXで表します。

Little EndianのHEXはどう読みますか?

バイト単位の並びを正しい順序へ戻してからIEEE 754のビット構造として解析します。機器によってはワード順も入れ替わるため仕様確認が必要です。