2 的补码相对于 1 的补码有什么优势?

问题描述 投票:0回答:6

在二进制数系统中表示负数时,2 的补码相对于 1 的补码有什么优势?它如何影响二进制系统中数字的特定位表示形式存储的值的范围?

binary negative-number
6个回答
78
投票

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

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

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

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

符号 分钟 最大
未签名: 0 255
一个人的比较: -127 +127
两人的比较: -128 +127

参考资料:


25
投票

主要优点是:

  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

7
投票

负整数: 2 的补码对于负整数来说是有意义的。 1 的补码只是一种计算技术,可能有助于评估 2 的补码。 2 的补码真正的(被击败的)竞争对手是负整数的符号数值表示。

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

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


3
投票

补码的优点#1

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

**

补码的优点#2

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

补码的优点#3

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

几乎每个将军都非常方便

目的 当今可用的计算机使用二进制补码。 为什么?因为,有了补码,我们不需要 特殊算法 (因此需要额外的电路) 涉及负值的算术运算。


2
投票

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


1
投票

2 的补码不是用来表示负数,而是一个倒数。

意味着你可以通过 A + B'(其中 B' 是 B 的 2 补码)来得到 A - B,意味着你可以用加法器完成所有操作,而不需要减法器

© www.soinside.com 2019 - 2024. All rights reserved.