アプリ版:「スタンプのみでお礼する」機能のリリースについて

この進数の問題を教えてください

・10進数の-23を8ビットの2の補数表現で
答えなさい。

途中の考え方もよければお願いします

A 回答 (1件)

23 = 1 * 2^4 + 0 * 2^3 + 1 * 2^2 + 1 * 2^1 + 1 * 2^0


なので、2進数では
 10111

2の補数を定義するには、2進数の有効桁を何桁にするかを決めないといけません。
ここでは「8桁」にしましょうか。

その場合には、-23 に相当する2進数は
  1 0000 0000 - 1 0111
 = 1110 1001            ①
ということになります。

「機械的」にやるには、10進数の 23 に相当する8桁の2進数「0001 0111」の「0」と「1」を逆転させて
  0001 0111 → 1110 1000 (これが「1の補数」)
これに「1を加えて」
  1110 1000 → 1110 1001 (これが「2の補数」)    ②

ということで、①と②は一致しますね。この場合、「8桁目が 1 は負数である」ということになります。


10進数で言えば、「-23」を表わすのに、たとえば「3桁まで有効」にして「1000の位」は使わないものと決めて、
 023 + 977 = 1000   ③
となることを利用します。
このとき、
 023 + (-023) = 000  ④
となることから、「有効桁数は3桁」という範囲で計算すれば、③と④は同じ結果になることになります。(③の1000の位は、単に「桁あふれ」しただけで、数値とは認められない)

 ということで、「-23」を「977」と表わしますよ、というのが「10進数の10の補数」です(「2進数の2の補数」に相当)。この場合には、「100の位が5以上は負数である」、ということになります。つまり「3桁の10進数」は、補数表現をする場合には「-500 ~ 499」しか表わせないということです。

「23」の場合には、1の補数に相当するのが
  999 - 023 = 976 (10進数の9の補数)
これに「1を加えて」
  976 + 1 = 977 (10進数の10の補数)
が「2の補数」に相当します。
    • good
    • 0
この回答へのお礼

あなたに会えてよかった

ありがとうございます!
これから解く問題も何とか
解けそうです
丁寧な回答、本当に助かり
ました…

お礼日時:2017/07/31 23:33

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