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

2進数を10進数に変える問題で困っています。
-30などを2の補数で考えることはできるのですが(-30の2進数は11100010)、
-3.625 など、小数が入ったときはどのように考えればいいのでしょうか?
答えは 10101110 になるみたいなのですが、
なぜそうなるのかわかりません。
あと、 11111010 =実数 を10進数になおせ という問題もわかりません。
こちらは答えが -0.3125 になるそうです。
すごく困っています。
回答よろしくお願いします。

A 回答 (3件)

>-3.625など、小数が入ったときはどのように考えればいいのでしょうか?


>答えは10101110になるみたいなのですが、

前提条件が何もなくこのままでは解けるはずがない問題なので,答えだという値から逆算して,問題文の前提条件を推理してみます。

(3.625)10 = 3+0.5+0.125 = 3+1/2+1/8 = (101.101)2
この整数部と小数部をそれぞれ4bitにした後(0101.1010)2,bit反転して+1すると 10100110 というbit列になります。(質問文中の 1010'1'110 は誤植ではないでしょうか?)

よって,次のような2進数形式を想定しているのでしょう。

・8bit長の固定小数点形式(前半4bitが整数部,後半4bitが小数部)
・負の数は「2の補数表現」を採用

----------------
>11111010 =実数 を10進数になおせ という問題もわかりません。
>こちらは答えが -0.3125 になるそうです。

前提条件が何もなくこのままでは解けるはずがない問題なので,答えだという値から逆算して,問題文の前提条件を推理してみます。

(0.3125)10 = 0.25+0.0625 = 1/4+1/16 = (0.0101)2
この整数部を4bitにした後(0000.0101),bit反転すると問題文の値になるようです。

よって,次のような2進数形式を想定しているのでしょう。

・8bit長の固定小数点形式(前半4bitが整数部,後半4bitが小数部)
・負の数は「1の補数表現」を採用

----------------
ANo.2で指摘されていますが,上記はどちらも「こういう形式もありうる」と出題者が机上で仮定した2進数形式であり,実際のコンピュータ内ではこの形式の実数表現は用いられていません。
    • good
    • 0
この回答へのお礼

今日、この問題を作った先生に質問しに行ったら、先生の方が間違えていたみたいです。
ほかにもいろいろ調べてみたんですが、どうしても解けなかったのでここで書かせてもらいました。
親切に解答までしてもらい本当にありがとうございました。

お礼日時:2007/10/02 18:50

小数点つきの数(実数)を表記するには


あらかじめ 仮数部と指数部の桁数・位置・符号の位置が定義されていなければなりません
11111010 =実数 の場合 最初の4桁を符号付仮数部、後半の4桁を符号付指数部 とかに

通常は最低でも32ビットで表記します
各種の規定があります (IEEEとか)
    • good
    • 0

問題の2進数の中に、小数点はありませんか?


小数点のない2進数は小数にはなりませんよ。
考え方としては、2進数で
101
は、10進数では
2^2*1+2^1*0+2^0*1
=4+0+1=5
で、5になりますよね。
小数の場合は逆に2で割っていきます。2進数で
101.11
は10進数に直すと
2^2*1+2^1*0+2^0*1+2^(-1)*1+2^(-2)*1
=4+0+1+0.5+0.25
=5.75
という計算になるのです。
    • good
    • 0

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


おすすめ情報