0

情况1:

让我尝试用 4 位表示 2 的补码中的 -7:-
二进制的 7:0111
1 的补码中的
7:1000 2 的补码中的 7:1001
所以将我的 2 的数字转换为十进制:-1x2^3+0+0+1x2 ^0
=> -8+1=-7 正确!!!

案例二:

让我尝试用 4 位表示 2 的补码中的 7:-
二进制的 -7:1111
1 的补码中的
7:1000 2 的补码中的 7:1001
所以将我的 2 的数字转换为十进制:-1x2^3+0+0+1x2 ^0
=> -8+1=-7
它仍然是-7,我错了!!!!

4

1 回答 1

1

您稍微混淆了这些概念-

MSB(最高有效位)表示数字的符号。where0代表正面,1代表负面。此外,MSB不参与数字转换(如果它的代表符号)。

因此,-7在二进制中 is1111和 not 0111

现在,要对二进制数进行加法、减法、除法、乘法运算,我们可以使用带MSB的带符号数并定义新的 est 规则以获得正确的结果。

或者

使用补充方法来做到这一点。

计算一个数的补码

  1. 反转所有位 (0111) -> (1000)
  2. 将结果加一 (1000 + 1) -> (1001)
    +7 -> 0111

(+) -7 -> 1001 (2s complement)

......................

     0 -> 10000 (ignoring the carry over MSB we will get zero which is the correct answer)
于 2019-07-13T17:02:25.407 回答