-3 + -3 = -2 的二进制补码

-3 + -3 = -2 in two's complement

使用 4 位数字计算 -3 + -3 的补码,我的计算结果是 -2。

3二进制为0011

通过翻转所有数字来补码,因为它们都是负数

1100 && 1100

给它们加一,因为我们使用的是补码

1101 + 1101 =

11010

第一个溢出了,被丢进了二进制补码。所以剩下 1010,十进制为负二。有人可以解释一下这个过程中做错了什么吗?


编辑

我的问题似乎更具体如何解释二进制补码计算的结果。我将结果处理如下:

结果是1010。 在我的世界里,第一位是符号位,表示这个数是负数。 后面的0表示-4的有0个 下面的 1 表示 -2 中有 1 个 后面的0表示有0个-1的

因此,我将其解释为结果为 -2

first one is overflow

如果正如您在这里暗示的那样,您将存储限制为单个 nybble,那么使用二进制补码,您可以表示 -87 范围内的值。

-2 将是 0b1110,这不是您所拥有的。 -6 确实是 0b1010,这是正确的总和。

结果是正确的,只是你理解错了。当您对二进制补码中的数字执行算术运算时,结果也是二进制补码。因此,从负数到正数的转换与原始数字从正数到负数的转换方式相同。

给定4位二进制值1010,先翻转一个位的补码得到0101,然后对二进制补码加1得到0110

0110是6,所以1010是-6。