2的正数表示形式存在吗?

时间:2019-07-13 15:25:06

标签: number-systems

情况1:

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

情况2:

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

1 个答案:

答案 0 :(得分:1)

您对概念稍有混淆-

MSB (最高有效位)表示数字的符号。 0代表肯定,而1代表负面。另外, MSB 不参与数字转换(如果它代表符号)。

因此,二进制文件中的-71111,而不是0111

现在,要对二进制数字进行加,减,除,乘运算,我们可以将带符号的数字与 MSB 一起使用,并定义新的规则以获取正确的结果。

OR

使用补码方法。

计算数字的补数

  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)