63

在二进制数系统的负数表示中,2 的补码比 1 的补码有什么优势?它如何影响二进制系统中以数字的某个位表示形式存储的值的范围?

4

6 回答 6

69

二进制补码相对于一个补码的主要优点是二进制补码只有一个值为零。一个补码有一个“正”零和一个“负”零。

接下来,要使用一个补码添加数字,您必须首先进行二进制加法,然后添加一个结束进位值。

二进制补码只有一个零值,并且不需要进位值。

您还询问了存储的值范围如何受到影响。考虑一个八位整数值,以下是您的最小值和最大值:

Notation     Min   Max
==========  ====  ====
Unsigned:      0   255
One's Comp: -127  +127
Two's Comp: -128  +127

参考:

于 2012-06-15T16:04:11.777 回答
22

主要优点是:

  1. 在 1 中有一个-0( 11111111) 和一个+0( 00000000),即相同的两个值0。另一方面,在 2 的补码中,0( 00000000) 只有一个值。这是因为

    +0 --> 00000000
    

     -0 --> 00000000 --> 11111111 + 1 --> 00000000
    
  2. 在使用 1 进行加法或减法等算术运算时,我们必须添加一个额外的进位位,即1在结果中添加正确的答案,例如:

           +1(00000001)
         +
           -1(11111110)
         -----------------
         = (11111111)
    

但正确答案是0。为了得到0,我们必须1在结果中添加一个进位位 ( 11111111 + 1 = 00000000)。

在 2 的补码中,不必修改结果:

               +1(00000001)
              +
               -1(11111111)
         -----------------
              = 1 00000000
于 2014-11-27T18:10:16.113 回答
7

负整数: 2 的补码可用于负整数。1 的补码只是一种计算技术,可能有助于评估 2 的补码。2 的补码的真正(击败)对手是负整数的符号幅度表示。

无溢出: 1 的补码对负整数没有特殊用途。2 的补码是有意义的,因为它可以用于自然加法和减法运算,而无需更改位。如果没有发生溢出,结果的符号位就是正确的值。这种表示法中的位数提升是直截了当的,例如,要将一个 8 位有符号整数提升为 16,我们可以简单地在其高字节中重复整数值的符号位。

符号幅度:相反,符号幅度符号只是人类用来表示负整数的方式。位数提升和加减运算与这种表示法有点混乱。

于 2012-06-15T16:09:00.750 回答
3

二进制补码的优点 #1

在二进制补码表示中,值零通过将所有位设置为零来唯一表示:

**

补码 #2 的优点

** 当您在二进制补码表示中对两个有符号整数执行算术运算(例如,加法、减法、乘法、除法)时,您可以使用完全相同的方法,就好像您有两个无符号整数(即非负整数与没有符号位)...除了,你扔掉高进位(或减法的高借位)

补码 #3 的优点

二的补码表示的这个性质是这样的

非常方便,几乎每个将军

今天可用的专用计算机使用Two's Complement。为什么?因为,使用二进制补码,我们不需要特殊算法(因此不需要额外的电路)来进行涉及负值的算术运算。

于 2015-05-06T06:55:34.807 回答
2

二进制补码相对于有符号位表示的另一个主要优点是 2 的补码表示在硬件中易于操作

于 2014-11-28T16:14:32.150 回答
1

2s 补码不是用来表示负数,而是倒数。

意味着你可以做 A + B'(其中 B' 是 B 的 2s 补码)来给出 A - B,意味着你可以用加法器做所有事情,而不需要减法器

于 2012-06-15T16:02:24.910 回答