这是溢出吗? - 二进制补码
Is this an Overflow? - Twos Complement
我正在尝试将以下两个二进制数相加,但是我无法这样做,因为我不确定这是否是溢出?
110101 + 010111
我得到的答案是:1001100
我是删除答案中最左边的 1 还是保留它?通过删除它我得到 12,否则答案是不正确的。我做错了什么吗?
这样对吗?
这个问题的答案取决于您所谈论的系统的字长。在 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
.
我正在尝试将以下两个二进制数相加,但是我无法这样做,因为我不确定这是否是溢出?
110101 + 010111 我得到的答案是:1001100
我是删除答案中最左边的 1 还是保留它?通过删除它我得到 12,否则答案是不正确的。我做错了什么吗?
这样对吗?
这个问题的答案取决于您所谈论的系统的字长。在 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
.