签名溢出 - 为什么 MSB 的进位和进位应该匹配?

Signed Overflow - Why carry in and carry out of MSB should match?

在两个有符号整数的二进制加法中,如果 MSB 列的进位和出位不匹配,则存在有符号溢出。

这条规则背后的逻辑是什么。为什么carry in和carry out要匹配才能得到正确的结果。 请解释。

显然有两种不匹配的情况:

  1. 有进位没有进位。这一定意味着两个输入 MSB 均为 0,但结果 MSB 为 1。由于 MSB 是符号位,这对应于将两个非负数相加并得到负结果,因此溢出。
  2. 没有进位但有进位。这一定意味着两个输入 MSB 都是 1,但结果 MSB 是 0。这对应于将两个负数相加成为非负数,从而溢出。