两个补充加法问题

时间:2011-08-29 04:57:58

标签: binary twos-complement binary-operators

我正在研究Two的补充补充。基本上我需要显示-27到+31的加法,两个数字都是二进制,使用6位。

我的问题是携带操作。也许我做得不对劲。

-27是二进制:111011
+31是二进制:011111

我认为答案应该是:
+4是二进制:000010

这就是我正在做的事情:

Carry  1 1 1 1 1  
- 27   1 1 1 0 1 1
+ 31   0 1 1 1 1 1
-------------------------
Sum:   0 1 1 0 1 0

在我的脑海中计算到52而不是4.

我做错了什么?

2 个答案:

答案 0 :(得分:3)

你的数学错了。

27是二进制0 1 1 0 1 1(注意我为符号添加的前导0)

-27是两个补码中的1 0 0 0 1 1

当你用这个做数学时,你应该得到正确的结果。


这是快速执行两个补码的“技巧”。

从LSB开始,准确地复制数字,直到遇到第一个零,然后复制该零。之后,翻转所有位直到MSB。

这相当于翻转所有位(一个补码)并添加一个(将其变为二进制补码),但只需一步。

答案 1 :(得分:1)

嗯,31 - 27 = 4,正确! :)

但是,二进制的

4 is 100,你确定-27 is 111011 ???