- ベストアンサー
2進数 10進数 2の補数 小数
2進数を10進数に変える問題で困っています。 -30などを2の補数で考えることはできるのですが(-30の2進数は11100010)、 -3.625 など、小数が入ったときはどのように考えればいいのでしょうか? 答えは 10101110 になるみたいなのですが、 なぜそうなるのかわかりません。 あと、 11111010 =実数 を10進数になおせ という問題もわかりません。 こちらは答えが -0.3125 になるそうです。 すごく困っています。 回答よろしくお願いします。
- みんなの回答 (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進数形式であり,実際のコンピュータ内ではこの形式の実数表現は用いられていません。
その他の回答 (2)
- outerlimit
- ベストアンサー率26% (993/3718)
小数点つきの数(実数)を表記するには あらかじめ 仮数部と指数部の桁数・位置・符号の位置が定義されていなければなりません 11111010 =実数 の場合 最初の4桁を符号付仮数部、後半の4桁を符号付指数部 とかに 通常は最低でも32ビットで表記します 各種の規定があります (IEEEとか)
問題の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 という計算になるのです。
お礼
今日、この問題を作った先生に質問しに行ったら、先生の方が間違えていたみたいです。 ほかにもいろいろ調べてみたんですが、どうしても解けなかったのでここで書かせてもらいました。 親切に解答までしてもらい本当にありがとうございました。