数学
大学生・専門学校生・社会人
解決済み

この問題の解説お願いします。
2進数の足し算を16進数で示せ。という問題です。

5. 次の2進数の計算結果を16 進数で示せ、ただし,負の数は8ビットの2の補数形式で表現するもの とする。 (1) 0100 1100 + 1011 1101 (2) 1111 0001 + 0101 1111
2進数 16進数 補数

回答

✨ ベストアンサー ✨

(1)
0100 1100 = 76
+ 1011 1101 = -67
ーーーーーー
1 0000 1001 = 9
最上位の1は無視
16進数で 09

ととろ

(2)
1111 0001 = -15
+ 0101 1111 = 95
ーーーーーー
1 0101 0000 = 80
最上位の1は無視
16進数で50

Mari 🤍

負の数は8ビットの2の補数形式で表されているので、自分はこの方法で解いてみたのですが、この解き方では間違っているってことですか…?💦
ご確認の方お願いします🙇‍♀️

ととろ

-x を反転したのならそれはxですよね?
-x を足すのと x を足すのは違いますよね?
反転してxを求めたのならそれを引かないといけませんよ。

0100 0011 = 67 だから
2の補数を取る前の 1011 1101 は -67です

Mari 🤍

なるほど!確かにそうですね🤭
とても参考になりました🙌
本当にありがとうございます!😭

ととろ

そもそもがなぜ2の補数を使うのか?というのを思い出すと、正の数の加算と同じやり方で負の数の加算ができるから、つまり、ただ足し算して最上位の繰り上がりを無視するだけで良い。
反転してみるのは検算のためですね。

この回答にコメントする
疑問は解決しましたか?

この質問を見ている人は
こちらの質問も見ています😉