浮動小数点の変換に挑戦しよう

先ほどの手順を踏まえて、実際に挑戦してみましょう。

第1問 次の10進数を、IEEE754の形式の浮動小数点表現に変換し、16進数8桁で答えなさい。

(185)10

ヒント 変換の手順

前のスライドで示した、200を変換する手順を載せておきます。

必要に応じて確認しましょう。

  • 手順1

    200を2進数に変換します。


    (200)10 → (11001000)2

    基数変換の方法を忘れた場合は、IP01-02の「基数変換」で学び直しましょう。

  • 手順2

    求めた2進数の値を、IEEE754の形式に従い正規化します。


    (11001000)2

       ↓

       ↓整数部分が1つだけ残るように小数点を7つシフト

       ↓

    (1.1001000)2 × 27

       ↓

       ↓0は省略

       ↓

    (1.1001)2 × 27

       ↓

       ↓符号を判別するため(-1)を追加する。その上で200は正の数なので0乗する。

       ↓

    (-1)0 × (1.1001)2 × 27

    ※0乗するとどんな数も1になる もし1乗した場合は-1がそのまま使われる。

  • 手順3

    各数値を確認します。

    S・符号部:0

    E・指数部:7 + 127 = 134

    M・仮数部:1001

    指数は127を足すこと、仮数は先頭の1は取り除くことを忘れずに!!

  • 手順4

    32ビットの表現に当てはめていきます。

    S・符号部 = 0

  • 手順5

    E・指数部 = 134

    134を2進数に変換すると、「10000110」となる

  • 手順6

    M・仮数部 = 1001

    右に0を埋めて、23ビットにする



第2問 次のIEEE754の形式の浮動小数点表現の16進数を、10進数に変換して答えなさい。

(43A00000)16

ヒント 変換の手順

前のスライドで示した、16進数の「C2300000」を変換する手順を載せておきます。

必要に応じて確認しましょう。

  • 手順1

    16進数の「C2300000」を2進数に変換する。


    (C2300000)16 → (110000100011000・・・)2

    16進数で表記されている場合は、2進数に変換した数値をそのまま32bitに当てはめてください。

    この時に、符号部、指数部、仮数部を意識する必要はありません。

  • 手順2

    各値を変換し、計算します。

    S・符号部:1

    E・指数部:(10000100)2→(132)10

    M・仮数部:01100・・・ → 1.011

    仮数部の頭に「1.」をつけてください。右に並んだ0は全て省略できます。


    (-1)1 × 1.011 × 2132-127

    =(-1)1 × 1.011 × 25

    = -101100

    指数は、127を引くことを忘れずに!!

  • 手順3

    10進数に変換します。

    -101100 = -42



※この再現版では提出は行いません(送信先は未接続です)

Well done!

次のステップに進みましょう!

次のステップに進む

← 前のステップにもどる