2015-04-04 58 views
0

我想添加以下两个二进制数字,但我无法这样做因为我不知道这是否溢出?这是一个溢出? - 二进制补码

110101 + 010111 我得到的答案是:1001100

难道我删除了答案最左边的1或者我把它?通过删除它我得到12,否则答案是不正确的。难道我做错了什么?

这是正确的吗?

+0

最终答案是1001100这应该是(-11)+ 23 = 12.但是,如果我要删除最左边的1,我得到12 - 我只是把1留在? – GDesigns 2015-04-04 14:57:36

回答

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

+0

清除了很多东西 - 谢谢 – GDesigns 2015-04-04 15:12:34