我使用4位,1位全加器构建了一个四位加法器/减法器,输入和输出是二进制补码。
如果X=0111 and Y=1000
他们的总和显然是1111。
在十进制中,这相当于7 + 8,因此15就是总和的结果。
我很困惑,但是如果这个结果需要通过翻转位并添加一个来转换回“常规”二进制文件?因此答案将是0001,代表十进制的1。并且在翻译之前的十进制Y实际上是0110表示6,从而在二进制7-6 = 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。