什么是2的补充数?

时间:2013-05-24 05:56:01

标签: math language-agnostic numbers twos-complement number-systems

2的补充号是什么?
为什么我们采用1的补语并加1?为什么我们在服用1次补语后不减1? 为什么计算机使用2的补语?

3 个答案:

答案 0 :(得分:6)

2的补充数是多少?

  

互补数字系统用于表示负数。所以,   2的补码数系统用于表示负数。

<强>更新

Q:  What “2’s Complement System” says?

A: The negative equivalent of binary number is its 2’s complement. (1’s Complement + 1)

注意:需要1个额外位来表示数字的符号。 MSB(最高有效位)用作符号位。如果MSB为0,则该数字为正数。如果MSB为1,则该数字为负数。

1’s Complement  Value   2’s Complement
    011         +3          011
    010         +2          010
    001         +1          001
    000         +0          000
    111         -0          000
    110         -1          111
    101         -2          110
    100         -3          101
                -4          100

How '100' (3 bits) is -4?

MSB用作符号,如果为1,则为负,如果为0则为正。

-1 * 2^2 + 0*2^1 + 0*2^0 = -4 + 0 + 0 = -4

类似地,101(3位)是-3

-1 * 2^2 + 0*2^1 + 1*2^0 = -4 + 0 + 1 = -3

观察:

•   In 1’s complement, using 3 bits, we represented 2^3 = 8 numbers i.e from -3 to +3.
•   In 1’s complement, -0 and +0 are having 2 representation. (+0 is ‘000’ and -0 is ‘111’).
    But mathematically +0 and -0 are same.
•   In 2’s complement, using 3 bits, we represented only 2^3 = 8 numbers i.e from -4 to +3.
•   In 2’s complement, -0 and +0 are having same representation.
•   Since +0 and -0 in 2’s complement is having same representation, 
    we are left out with one more combination which is ‘100’ = -4.

为什么我们采用1的补语并加1?为什么我们在服用1次补体后不减1?

  

请参阅以下链接中的“为什么反转并添加一个作品”主题。如果   我开始解释,这篇文章会变得很大。   http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html

为什么计算机使用2'补充?

  • Cos'的硬件较少。如果计算机使用2'补充方式, 它使用加法电路进行减法。所以,硬件越来越少!!!
  • 如上例所示,+ 0和-0具有相同的表示。 (1的补码和符号幅度表示有+0和-0的2种不同表示。)
  • (不重要)您可以使用2的补码代表一个额外的数字。 (在上面的例子中,它是-4,使用3位二进制是'100')。

答案 1 :(得分:0)

来自维基百科Two's Complement

  

二进制补码系统的优点是加法,减法和乘法的基本算术运算与无符号二进制数的基本算术运算相同(只要输入以相同的位数表示,并且任何溢出超出那些从结果中丢弃比特)。该属性使系统更易于实现,并且能够轻松处理更高精度的算术。此外,零只有一个表示,避免了与负零相关的微妙之处,这种微小的存在于一个补充系统中。

答案 2 :(得分:0)

我们使用二进制补码而不是一对补码的原因是为了使算术尽可能简单。

考虑到在一个补码中,1111 11110000 0000是相同的数字 - 通过减去一个,我们最终得到了相同的数字。这是一个太大的痛苦需要考虑 - 所以我们使用两个补码,其中1111 1111是-1 - 通过减去一个,我们成功地减去一个。万岁!

(第二个优势是我们可以在两个补码中代表一个唯一的数字,而不是在一个补码中 - 在两个补码-128到+127而不是一个补码-127到+127。)