電子書籍の厳選無料作品が豊富!

10進数+0.375を浮動小数点で記憶させ、その記憶領域のダンプリストを読み取ると、
0.375は16進数で(1)に、
-1は16進数で(2)となる。

答えは(1)は7F00、(2)8600です。
この2つの問題の途中式と解説をお願いします。

バイト型:バイト数は1バイト,負の補数は2の補数で表す
整数型:バイト数は2バイト,負の補数は2の補数で表す
浮動小数点:バイト数は2バイト,符号1ビット,指数部5ビット,仮数部10ビット
ビット番号0:符号部.仮数部の符号が入っている.0なら正,1なら負
ビット番号1-5:指数部.負の値を2の補数で表す
ビット番号6-15:仮数部.ビット番号6を小数点第1位とする仮数部の小数点以下の絶対値が、正規化された2進数で入っている
正規化とは,仮数部が2進数で0.1以上1.0未満になるよう指数部を増減する操作である

A 回答 (1件)

(1)



>2進数で0.1以上1.0未満になるよう
ってことは
>10進数で0.5以上1.0未満になるよう
ってことだから

0.375 = 3/8 = 0.75 * 2^(-1)と書くと

ビット番号は、元の数値が正であることから0 …★

>ビット番号1-5:指数部.負の値を2の補数で表す
だってんだから、-1を2の補数で表すと 11111 …★

#以下の例だと8ビットだから、255になっているけどね
http://www7a.biglobe.ne.jp/~thor/pcnyumon/nyu032 …

>ビット番号6-15:仮数部.ビット番号6を小数点第1位とする仮数部の小数点以下の絶対値が、正規化された2進数で入っている

あとは0.75を2進数で表すと
0.375 = (1/2) * 1 + (1/2)^2 * 1
だから
0.1100000000

1100000000 …★

★の部分を連結して

0 11111 1100000000

16進数で表記するために切れ目を変えて
0111 1111 0000 0000
あとはそれぞれを該当する文字に変えて
7 F 0 0
よって

7F00
============================
(2)
>ビット番号0:符号部.仮数部の符号が入っている.0なら正,1なら負
元の数は負なので1 …★

で後は1.0だと思って対処する。

>10進数で0.5以上1.0未満になるよう
を満たすように、

0.5 * 2^1
と書くと、
>ビット番号1-5:指数部.負の値を2の補数で表す
は素直に00001…★

残りは
0.5 = (1/2)^1 * 1

1000000000 …★

★の部分を全部繋げて

1000011000000000

区切り方を変えて

1000 0110 0000 0000
あとはそれぞれを該当する文字に変えて
8 6 0 0

よって
8600
    • good
    • 0
この回答へのお礼

詳しい説明をありがとうございます

お礼日時:2011/09/01 17:46

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