- ベストアンサー
123と-123を
123と-123を 10進数を8ビットの2の補数表現で表わす方法を教えてください。 できればこの逆もよろしくお願いします。 例えば11010101などです。 過去ログを見てもいまいち理解できませんでした↓↓
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
2の補数表現は負数を表すために必要になるのです。正数はそのままです。 8ビットの2の補数表現で扱える数は-128 ~ 127です。それ以外は扱えません。 8ビットの最初のビットが0なら、その数は正数です。そのまま10進数に変換します。 8ビットの最初のビットが1なら、その数は負数です。その数の2の補数を求めると正数になるので、それを10進数に変換します。その数に-を付けた値が答えです。 正数の場合の2進数から10進数に変換する方法は次を参照。 http://www.pursue.ne.jp/jouhousyo/sysad/sysad010.htm
その他の回答 (1)
- hananoppo
- ベストアンサー率46% (109/235)
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 となります。
お礼
ありごとうございます! 追加の質問で申し訳ないのですが、 正の10進数の場合は2の補数表現は使わないのでしょうか? あと、-127~+128以外の数で、+-が同じ数の場合はどうすればよいんでしょうか? 例えば、234と-234とかです。 それと、8ビットの2の補数から10進数にする方法はどのようにすればよいですか? たくさんすいません↓↓
お礼
わかりやすいご説明ありがとうございました! この説明を参考にしてがんばってみます!