プロが教える店舗&オフィスのセキュリティ対策術

2進数: 0000 0000 0000 0000 0000 0000 0000 0001 を
2の補数にし、符合つき10進数として読み取ったときの値はいくつになるかという問題なのですが、正解を出せなくて困っています。

自分は以下のように考えたのですが、間違っている箇所を指摘していただけますでしょうか。
1) 補数にすると オール1になる
2) 一番左の桁は符合として読むから、符合は1=マイナス
3) 左から2桁目以降を10進数に読み変えて、2147483647
4) 答えは -214783647

これでバツがついてしまいました。正解は不明です。
よろしくお願いします。

A 回答 (5件)

bitは少ないが、考え方の解説のページです。



参考URL:http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text …
    • good
    • 0
この回答へのお礼

わかりやすいページをありがとうございます!

お礼日時:2006/08/19 22:41

答えは -1 と思いますが、説明しにくいので ↓ を参考にしてください。


http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text …
    • good
    • 0
この回答へのお礼

ありがとうございます!参考にさせていただきます。

お礼日時:2006/08/19 22:42

-214783646


では?

この回答への補足

ごめんなさい、その数字になる理由がわかりませんでした。
過程を記載していただけるとありがたいです。

補足日時:2006/08/19 22:39
    • good
    • 0

答えは-1です。



2の補数がオール1ですから負の数です。

もう1度、2の補数をとって1。
これに-をつけて-1です。

もっと簡単に言えば1→2の補数→-1です。
    • good
    • 0
この回答へのお礼

なるほど!もう一度2の補数をとる作業がぬけていたわけですね…
-1 になる理由はしっかり理解できました。ありがとうございます。

お礼日時:2006/08/19 22:45

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進数表現の方法自体は決め事に過ぎませんが、なぜそのように決まったかということを、論理回路レベルでわかるようになると、非常にすんなりと理解できると思うのですが。
    • good
    • 0
この回答へのお礼

詳細な説明をいただき、ありがとうございました。
仰る通り、ただの規則計算としてではなく、2の補数が使用される意味からしっかり勉強しなおしたいと思います。

お礼日時:2006/08/19 23:19

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