理解两个补语的加法

时间:2013-04-15 02:49:06

标签: binary addition twos-complement

我使用4位,1位全加器构建了一个四位加法器/减法器,输入和输出是二进制补码。

如果X=0111 and Y=1000他们的总和显然是1111。

在十进制中,这相当于7 + 8,因此15就是总和的结果。

我很困惑,但是如果这个结果需要通过翻转位并添加一个来转换回“常规”二进制文件?因此答案将是0001,代表十进制的1。并且在翻译之前的十进制Y实际上是0110表示6,从而在二进制7-6 = 1中产生以下内容。如果有人能指出我正确的方向,我会很感激!

1 个答案:

答案 0 :(得分:1)

看来你的Y转换错了。 Y = 1000 2 = -8 10

要表示-6,你取0110,将这些位翻转到1001并加1,所以Y = 1010.(和0111 + 1010 = 0001,如你所料。)

要返回,请翻转1010 = 0101的位并添加一个给0110 = 6。

修改以回答您的后续问题:

让:

X = 0111
Y = 1100

X + Y = 0011 (ignoring overflow)

所以无论我们添加什么,它都等于3.我们知道X = 7。

Y = 1100 => 0011 + 1 = (negative)0100 = -4

7 +( - 4)= 3

不需要翻译,只需正确表示正数和负数。我认为你的困惑来自这样一个事实,即我们“否定”负数来找到该数字的绝对值并在其前面贴上一个负号,就像上面Y的转换一样。这是因为2的补码中的负数不如正数可读,但0100仍然是+4,1100仍然是-4。