使用4位数计算-3 + -3在二的补码中,我的计算得出-2.
3二进制数是0011
通过翻转所有数字来补充两者,因为两者都是负数
1100 & 1100
加上一个,因为我们使用的是两个的补码
1101 + 1101 =
11010
第一个是溢出,然后被丢弃在两个的补语中。剩下的是1010,这是小数中的负2。有人能解释一下在这个过程中做错了什么吗?
编辑
我的问题似乎更具体地说明了如何解释两个补语的计算结果。我对结果的看法如下:
结果是1010。在我的世界里,第一个位是符号位,表示数字是负数。下面的0表示-4的0,下面的1表示-2中的1,下面的0表示-1的0。
因此,我把它解释为结果是-2
发布于 2019-02-25 18:28:23
结果是正确的,你只是把它解释错了。当你在两个补码中对数字执行算术时,结果也是两个补数。因此,从负数到正数的转换和原始数从正数到负数的转换方式是一样的。
给定4位二进制值1010
,首先将比特翻转到一个补码上以得到0101
,然后再为两个补码加1以得到0110
。
0110
是6,1010
是-6。
发布于 2019-02-25 18:26:04
第一个是溢出
如果像这里所暗示的那样,您将存储限制为单个nybble,那么使用两个补码,您可以将-8
范围内的值表示为7
。
然后,-2
将是0b1110
,这不是您所拥有的。-6
确实是0b1010
,这是正确的和。
https://stackoverflow.com/questions/54872355
复制相似问题