二进制数系统中负数表示中2的补码优于1的补码有什么优势?它如何影响二进制系统中某个位数表示中存储的值的范围?
答案 0 :(得分:51)
两个补码相对于一个补码的主要优点是二进制补码只有一个零值。一个补码有一个“正”零和一个“负”零。
接下来,要使用一个补码添加数字,您必须首先进行二进制加法,然后添加一个结束进位值。
二进制补码只有一个零值,不需要进位值。
您还询问了存储的值范围是如何受到影响的。考虑一个8位整数值,以下是您的最小值和最大值:
Notation Min Max
========== ==== ====
Unsigned: 0 255
One's Comp: -127 +127
Two's Comp: -128 +127
参考文献:
答案 1 :(得分:14)
主要优点是:
在1中有一个-0
(11111111
)和一个+0
(00000000
),即同一个{{的两个值1}}。另一方面,在2的补码中,0
(0
)只有一个值。这是因为
00000000
和
+0 --> 00000000
在使用1&1进行加法或减法等算术运算时,我们必须在结果中添加一个额外的进位,即 -0 --> 00000000 --> 11111111 + 1 --> 00000000
,以获得正确的答案,例如:
1
但正确的答案是 +1(00000001)
+
-1(11111110)
-----------------
= (11111111)
。为了获得0
,我们必须添加一个进位
位0
到结果(1
)。
在2补码中,结果不需要修改:
11111111 + 1 = 00000000
答案 2 :(得分:4)
负整数: 2的补码对于用于负整数是有意义的。 1的补码只是一种计算技术,可能有助于评估2的补码。 2的补码的真实(失败)对手是负整数的符号幅度表示。
无溢出: 1' s补码对负整数没有特殊用法。 2的补码是有意义的,因为它可以用于自然加法和减法运算,而无需改变位。假设没有发生溢出,结果的符号位就是正确的值。这种表示法中的位数提升是直接的,例如,为了将8位有符号整数提升为16,我们可以简单地在其高字节中重复整数值的符号位。
符号幅度:相反,符号幅度符号只是人类用来表示负整数的方式。这个符号的位数提升和加法减法运算有点乱。
答案 3 :(得分:3)
在Two's Complement表示中,值为零 通过将所有位设置为零来唯一表示:
**
** 执行算术运算时(例如, 二,加,减,乘,除) 你可以在Two's Complement表示中签名整数 可以使用 完全相同的方法 好像你有两个 无符号整数(即没有符号的非负整数 位)...... 除了 ,你扔掉高携带(或高 借 减法)
Two's Complement表示的这个属性是如此
目的 今天可用的计算机使用Two's Complement。 为什么?因为,在Two's Complement中,我们不需要 特殊算法 (因此额外的电路) 涉及负值的算术运算。
答案 4 :(得分:2)
二进制补码优于有符号位表示的另一个主要优点是2的补码表示很容易在硬件中操作
答案 5 :(得分:1)
2s补码不是用于表示负数而是反向。
意味着你可以做A + B'(其中B'是B的2s补码)给A - B,意味着你可以用加法器做所有事情而不需要减号