pra*_*phy 51 binary negative-number
二进制数系统中负数表示中2的补码优于1的补码有什么优势?它如何影响二进制系统中存储在某个位数表示中的值的范围?
JYe*_*ton 54
二进制补码相对于一个补码的主要优点是二进制补码只有一个零值.一个补码有一个"正"零和一个"负"零.
接下来,要使用一个补码添加数字,您必须首先进行二进制加法,然后添加一个结束进位值.
二进制补码只有一个零值,不需要进位值.
您还询问了存储的值范围是如何受到影响的.考虑一个8位整数值,以下是您的最小值和最大值:
Notation Min Max
========== ==== ====
Unsigned: 0 255
One's Comp: -127 +127
Two's Comp: -128 +127
Run Code Online (Sandbox Code Playgroud)
参考文献:
小智 16
主要优点是:
在1中有一个-0(11111111)和一个+0(00000000),即相同的两个值0.另一方面,在2的补码中,0(00000000)只有一个值.这是因为
+0 --> 00000000
Run Code Online (Sandbox Code Playgroud)
和
-0 --> 00000000 --> 11111111 + 1 --> 00000000
Run Code Online (Sandbox Code Playgroud)在使用1进行加法或减法等算术运算时,我们必须添加一个额外的进位,即1结果以获得正确的答案,例如:
+1(00000001)
+
-1(11111110)
-----------------
= (11111111)
Run Code Online (Sandbox Code Playgroud)但正确的答案是0.为了得到0我们必须1在结果(11111111 + 1 = 00000000)中添加一个进位.
在2的补码中,结果不必修改:
+1(00000001)
+
-1(11111111)
-----------------
= 1 00000000
Run Code Online (Sandbox Code Playgroud)
负整数: 2 的补码对于负整数很有意义。1 的补码只是一种计算技术,可能有助于评估 2 的补码。2 的补码的真正(失败)竞争对手是负整数的符号大小表示。
无溢出: 1 的补码对负整数没有特殊用途。2 的补码是有意义的,因为它可以用于自然加法和减法运算而无需更改位。如果没有发生溢出,结果的符号位就是正确的值。这种表示法中的位数提升很简单,例如,要将一个 8 位有符号整数提升为 16,我们可以简单地在其高字节中重复整数值的符号位。
符号大小:相反,符号大小符号只是人类用来表示负整数的方式。位数提升和加减运算与此表示法有点混乱。