【OCN】1GBプレゼントCP中!

例えば
11100100
という二進数があったとすると
これは
10進数に直すと
28の2の補数だから
-28らしいですが

普通に計算したら
違う数になってしまいます

これはどうやってー28だと見抜くのでしょうか?

A 回答 (6件)

定義が明確でなければいかような解釈も可能です



そのまま10進数で表せば 228 
最上位ビットが1ならば負数の定義ならば-28 
それに加えて下位2ビットが指数との定義なら・・・・・

書かれていることだけでそれを区別することはできません

クイズなら 答えたほうではない定義だと強弁すれば、どのように答えても不正解にできます(邪道ですが)
    • good
    • 0

とんちクイズは兎も角として、


2の補数表示は、「何桁の」補数表示か
を指定しなければ決まらない…ことは
理解しておくべきです。

「n 桁の二進数」と言われても、
符号無しか、符号法は2の補数か、それ以外か
を確認しなければ無意味であることは無論ですが。
    • good
    • 2

2の補数表示ということを前提に説明します。


一番左のMSBビットが符号ビットで、1のときはー(マイナス)数値を示します。
そのまま、4+32+64+128=228 となります。
256-228=28 となり 先に決めた符号 - をつけます。 
すると -28 です。
    • good
    • 5

そこに書いてある一番左のビットではなく、


何桁の二進数を扱う約束にしてあるかによって、
その一番左のビットを見なくてはなりません。
例えば 11100100 は、8桁二進数では負数、
16桁二進数では 0000000011100100 だから
正数です。
    • good
    • 2

#No.1さんのおっしゃる通り。


一番最初のビットが0か1かで判定します。正負、符号の判定を行います。

で、計算法ですが、一番左に1がある場合、
11100100
これを《反転》させて
00011011
にします。
で、これに《1を足します》。
すると、
00011100
になる。
これを十進数になおすと、
16 + 8 + 4 = 28
一番最初のビットが1なので、この数はマイナス。
なので、
-28
となるというわけです。
    • good
    • 4

>どうやってー28だと見抜くのでしょうか?



いちばん左のビットが符号用であるかどうかによります。
    • good
    • 4

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

このQ&Aを見た人はこんなQ&Aも見ています


人気Q&Aランキング