「10進数をIEEE754単精度で表現せよ」という問題の解き方

未分類

こんにちは、コンスキです。

「10進数をIEEE754単精度で表現せよ」もしくは、「10進数をIEEE754単精度に変換せよ」という問題の解き方をご紹介します。

今回は例として、-85.125という10進数をIEEE754単精度で表現する過程を取り上げてみます。

浮動小数点数表示の構成(32ビット)

0か1が入る1桁のことを1ビットと呼びます。

32ビットの浮動小数点表示は、次のような構成になります。

なぜこの構成になっているのか、最初は謎ですよね。

1度解いてみましょう。なんとなく分かると思います!

大まかな解き方

大まかな計算手順は次の3ステップです。

  1. 仮数部の符号を求める
  2. 仮数部mを求める
  3. 指数部eを求める

詳しい解き方

例として、-85.125という10進数をIEEE754単精度で表現していきます。

手順1. 仮数部の符号を求める

仮数部の符号は、10進数がなら「0」で、なら「1」です。

-85.125は負であるため、仮数部の符号は「1」になります。

手順2. 指数部eを求める

まず、10進数を2進数にします。

10進数に「-(マイナス)」が付いている場合は、「-」を取った後に2進数にします。

整数部分から2進数にします。

次に小数点以下を2進数にします。

整数部分と小数点以下を合体します。

その2進数を正規化します。(正規化:111を1.11×22に直すような作業)

2の右肩にある数字に、バイアス値の127を足した値を求めます。

1.010101001×26において、2の右肩にある数字は6

6 + 127 = 133

この133を2進数にします。

この「10000101」が指数部eです。

手順3. 仮数部mを求める

先ほどの正規化した2進数に注目します。

小数点とその左にある1、そして×2Eの部分を省略します。

この「010101001」を仮数部に入れます。

この時、左側に詰めて入れることに注意してください。

仮数部の空いている部分に0を入れます。

これが10進数をIEEE754単精度で表現したものになっています。

最後に

「10進数をIEEE754単精度で表現せよ」もしくは、「10進数をIEEE754単精度に変換せよ」という問題は解けましたか?

この記事が問題を解く助けになったらうれしいです。

ここまで読んでくれてありがとうございました。

コメント

タイトルとURLをコピーしました