• ベストアンサー

2進数の符号ビットの入った数字の見分け方

例えば 11100100 という二進数があったとすると これは 10進数に直すと 28の2の補数だから -28らしいですが 普通に計算したら 違う数になってしまいます これはどうやってー28だと見抜くのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • misawajp
  • ベストアンサー率24% (918/3743)
回答No.5

定義が明確でなければいかような解釈も可能です そのまま10進数で表せば 228  最上位ビットが1ならば負数の定義ならば-28  それに加えて下位2ビットが指数との定義なら・・・・・ 書かれていることだけでそれを区別することはできません クイズなら 答えたほうではない定義だと強弁すれば、どのように答えても不正解にできます(邪道ですが)

その他の回答 (5)

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.6

とんちクイズは兎も角として、 2の補数表示は、「何桁の」補数表示か を指定しなければ決まらない…ことは 理解しておくべきです。 「n 桁の二進数」と言われても、 符号無しか、符号法は2の補数か、それ以外か を確認しなければ無意味であることは無論ですが。

  • fjnobu
  • ベストアンサー率21% (491/2332)
回答No.4

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

  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.3

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

回答No.2

#No.1さんのおっしゃる通り。 一番最初のビットが0か1かで判定します。正負、符号の判定を行います。 で、計算法ですが、一番左に1がある場合、 11100100 これを《反転》させて 00011011 にします。 で、これに《1を足します》。 すると、 00011100 になる。 これを十進数になおすと、 16 + 8 + 4 = 28 一番最初のビットが1なので、この数はマイナス。 なので、 -28 となるというわけです。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

>どうやってー28だと見抜くのでしょうか? いちばん左のビットが符号用であるかどうかによります。

関連するQ&A