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

基本情報処理技術者試験を20日に受けます。勉強不足で困っています。どなたか教えてください。
問題「数値を16ビットの浮動小数点表示法で表現する。10進数0.375を正規化せよ:ここでの正規化は仮数部の有効数字よりも上位の0がなくなるように指数部を調節する操作である。」 
答え「0111111000000000」 最初の1ビットが仮数部の符号、次の4ビットが2のべき乗の指数部で負数は2の補数、残りの11ビットが仮数部の絶対値
となっています。
0.375を2進数に直すところまではわかったのですが、次の正規化がよくわかりません。よろしくお願いいたします。

A 回答 (4件)

10進数の0.375は、2進数は0.011です。


使用できるビット数が指数部、仮数部ともに限りがありますので、0.011をそのまま表記すると、仮数部が011となります。この先頭の"0"は別になくてもいいですよね?その分を指数部であらわせば、仮数部の桁を一桁稼ぐことができます。つまり、より正確な値を保持できることになります。これが正規化する意義です。

仮数部を(2倍)したわけですから、指数部は(1/2倍)します。よって指数部は(-1)です。負数ですから2の補数で表示すると1111(4ビット)になります。

浮動小数点表示は、正規化が絡んできますので、場合によっては情報落ちや桁落ちなどが発生します。このあたりを、再確認して試験に臨んでください。
    • good
    • 1
この回答へのお礼

情報落ち/桁落ちについても出ました。ありがとうございました。

お礼日時:2002/10/28 21:51

#1です。

大変失礼いたしました。確かに別物ですね。
    • good
    • 0

20日の試験頑張って下さいね。



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

ここが重要です。仮数部ですから2進数で表して、0.1・・・・・・の形にすると言う意味です。頭のゼロは位取りのゼロで、小数点の次からが有効数字です。

0.375は上の約束で2進数に直すと0.1100(×1/2)
したがって、仮数部は、11000000000、指数部は1/2倍(-1)で補数で1111
です。

※ 浮動小数点数の正規化は、多種あります。基数(2、16)指数部の補数有無
  仮数部の先頭の1の扱いの違いなど。
  くれぐれもだまされないようよく問題を読んでください。

因みに、この問題と、参考URLの問題(私が回答)は全く別の問題です。
 
    • good
    • 1
この回答へのお礼

ご丁寧な回答ありがとうございました。参考になりました。合格していれば嬉しいのですが、、、。ちょっと過去の問題と傾向が違っていたような気がするので心配です☆

お礼日時:2002/10/28 21:53

同様の質問が以前にされております。



参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=310289
    • good
    • 0

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