• ベストアンサー

123と-123を

123と-123を 10進数を8ビットの2の補数表現で表わす方法を教えてください。 できればこの逆もよろしくお願いします。 例えば11010101などです。 過去ログを見てもいまいち理解できませんでした↓↓    

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

  • ベストアンサー
  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.2

2の補数表現は負数を表すために必要になるのです。正数はそのままです。 8ビットの2の補数表現で扱える数は-128 ~ 127です。それ以外は扱えません。 8ビットの最初のビットが0なら、その数は正数です。そのまま10進数に変換します。 8ビットの最初のビットが1なら、その数は負数です。その数の2の補数を求めると正数になるので、それを10進数に変換します。その数に-を付けた値が答えです。 正数の場合の2進数から10進数に変換する方法は次を参照。 http://www.pursue.ne.jp/jouhousyo/sysad/sysad010.htm

syo6411
質問者

お礼

わかりやすいご説明ありがとうございました! この説明を参考にしてがんばってみます!

その他の回答 (1)

  • hananoppo
  • ベストアンサー率46% (109/235)
回答No.1

2の補数については次に解説があります。 http://ja.wikipedia.org/wiki/2%E3%81%AE%E8%A3%9C%E6%95%B0 例えば、123を2進数で表すと01111011です。 よって   100000000 -)  01111011 --------------    10000101 つまり、-123は10000101で表せます。 逆の計算をすると   100000000 -)  10000101 --------------    01111011 となります。

syo6411
質問者

お礼

ありごとうございます! 追加の質問で申し訳ないのですが、 正の10進数の場合は2の補数表現は使わないのでしょうか? あと、-127~+128以外の数で、+-が同じ数の場合はどうすればよいんでしょうか? 例えば、234と-234とかです。 それと、8ビットの2の補数から10進数にする方法はどのようにすればよいですか? たくさんすいません↓↓

関連するQ&A

専門家に質問してみよう