-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,那么使用二进制补码,您可以表示 -8
到 7
范围内的值。
-2
将是 0b1110
,这不是您所拥有的。 -6
确实是 0b1010
,这是正确的总和。
结果是正确的,只是你理解错了。当您对二进制补码中的数字执行算术运算时,结果也是二进制补码。因此,从负数到正数的转换与原始数字从正数到负数的转换方式相同。
给定4位二进制值1010
,先翻转一个位的补码得到0101
,然后对二进制补码加1得到0110
。
0110
是6,所以1010
是-6。
使用 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,那么使用二进制补码,您可以表示 -8
到 7
范围内的值。
-2
将是 0b1110
,这不是您所拥有的。 -6
确实是 0b1010
,这是正确的总和。
结果是正确的,只是你理解错了。当您对二进制补码中的数字执行算术运算时,结果也是二进制补码。因此,从负数到正数的转换与原始数字从正数到负数的转换方式相同。
给定4位二进制值1010
,先翻转一个位的补码得到0101
,然后对二进制补码加1得到0110
。
0110
是6,所以1010
是-6。