プロが教えるわが家の防犯対策術!

現在情報処理の勉強をしているのですが、下記の問題が解けません。。
もし、わかりすく教えてもらえれば,,,と思い、、、

数値を16ビットの浮動小数点数で表現する。10進数0.375を正規化した表現を、2進数であらわすとどうなるか求めよ。ここでの正規化は仮数部の有効数字よりも上位の0がなくなるように指数部を調整する操作である。
仮数部の符号(正は0 負は1)(1ビット)
奇数を2とする指数部で、負数は2の補数(4ビット)
仮数の絶対値(11ビット)
で、
答えは 0111 1110 0000 0000
なのですが、この指数部がどうしてもわかりません。
初心者なので、、わかりやすく教えてくだされば、、うれしいな。と思うのです。

A 回答 (1件)

まずは、0.375(10)を二進表記にすると 0.011(2) になります。



ここで「正規化」は

> ここでの正規化は仮数部の有効数字よりも上位の0がなくなるように指数部を調整する操作である。

と定義付けられていますが、ちょっと曖昧(*)です。回答から察するに 0.???? × 2の? 乗 という表現に
すれば良さそうです。

  (*) ?.??? × 2の? 乗 という表現も立派な正規化です

で、話を戻して、0.011(2) を正規化した表現で書くと 0.11 × 2^(-1) ですね。

正の数ですから仮数部の符号ビットは0。
指数部は -1 の4ビットの二の補数表現ですから 1111 ですね。
仮数部は 110 000 000 です(0.11 の分かりきっている0を除いて、11ビットに左詰にする)。


> この指数部がどうしてもわかりません

二の補数表現が分かりませんか?

細かい話を脇においておくと「ビットを反転したものに1を足したもの」が二の補数です。


# 説明が余り上手ではないなあ、という意味で「自信無し」としておきます (^^;
    • good
    • 0
この回答へのお礼

よーーーーくわかりました。
0.11 × 2^(-1)の部分を11 × 2^(-3)と勝手に考えてしまっていました。
大変わかりやすい説明でした。
ありがとうございました。

お礼日時:2002/03/11 17:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!