- ベストアンサー
2進数の問題なのですが
2進数: 0000 0000 0000 0000 0000 0000 0000 0001 を 2の補数にし、符合つき10進数として読み取ったときの値はいくつになるかという問題なのですが、正解を出せなくて困っています。 自分は以下のように考えたのですが、間違っている箇所を指摘していただけますでしょうか。 1) 補数にすると オール1になる 2) 一番左の桁は符合として読むから、符合は1=マイナス 3) 左から2桁目以降を10進数に読み変えて、2147483647 4) 答えは -214783647 これでバツがついてしまいました。正解は不明です。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
1111 1111 1111 1111 1111 1111 1111 1111 は、「-1」です。 1111 1111 1111 1111 1111 1111 1111 1110 が、「-2」です。 1111 1111 1111 1111 1111 1111 1111 1101 が、「-3」です。 というように、数の大小関係と、2進数表現における大小関係とを一致させておいたほうが、二値論理を用いて算術演算を行なう計算機を実現する際に、いろいろと都合が良いのです。 なぜならば、たとえば、足し算を行なう演算を二値論理で実現する際に、正たす正、正たす負、負たす正、負たす負の4通りに場合分けせずに、1通りの論理回路を作ればすむためです。 質問者さんが考えたように「答えは -21478364」としてしまうと、負数の領域において、数の大小関係と2進数表現における大小関係とが逆になってしまい、それで計算機の実現が不可能なわけではないのですが、いろいろと回路規模の増大などの不便が出てきます。 負数の2進数表現の方法自体は決め事に過ぎませんが、なぜそのように決まったかということを、論理回路レベルでわかるようになると、非常にすんなりと理解できると思うのですが。
その他の回答 (4)
- ymmasayan
- ベストアンサー率30% (2593/8599)
答えは-1です。 2の補数がオール1ですから負の数です。 もう1度、2の補数をとって1。 これに-をつけて-1です。 もっと簡単に言えば1→2の補数→-1です。
お礼
なるほど!もう一度2の補数をとる作業がぬけていたわけですね… -1 になる理由はしっかり理解できました。ありがとうございます。
- web2525
- ベストアンサー率42% (1219/2850)
-214783646 では?
補足
ごめんなさい、その数字になる理由がわかりませんでした。 過程を記載していただけるとありがたいです。
答えは -1 と思いますが、説明しにくいので ↓ を参考にしてください。 http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/fusu.htm
お礼
ありがとうございます!参考にさせていただきます。
- bin-chan
- ベストアンサー率33% (1403/4213)
bitは少ないが、考え方の解説のページです。
お礼
わかりやすいページをありがとうございます!
お礼
詳細な説明をいただき、ありがとうございました。 仰る通り、ただの規則計算としてではなく、2の補数が使用される意味からしっかり勉強しなおしたいと思います。