我试图将以下两个二进制数加在一起,但我无法这样做,因为我不确定这是否是溢出?
110101 + 010111 我得到的答案是:1001100
我会删除答案中最左边的1还是保留它?通过删除它我得到12,否则答案是不对的。我做错了吗?
这是对的吗?
答案 0 :(得分:1)
这个问题的答案取决于你所谈论的系统中单词的大小。在8位(或更高)系统中,你正在做2的补码,
的总和110101 + 010111 = 1001100
与:
相同00110101 + 00010111 = 01001100
是:53 + 23 = 76
没有溢出或执行。
如果它是一个7位系统,做2的补码,那么你有:
0110101 + 0010111 = 1001100
哪个是53 + 23 = -52
。有溢出,但没有执行。
如果它是一个6位系统,做2的补码,那么:
110101 + 010111 = (1)001100
哪个是-11 + 23 = 12
。没有溢出,但有一个执行。请注意,在6位系统中,您不能在技术上拥有1001100
因为它是7位。你会001100
。
供参考,请参阅The CARRY flag and OVERFLOW flag in binary arithmetic。