这是溢出吗? - 二进制补码

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.

参考 The CARRY flag and OVERFLOW flag in binary arithmetic