在二进制的负数表示中,2的补码比1的补码有什么优势?它如何影响存储在二进制中数字的某一位表示中的值的范围?
发布于 2012-06-16 00:04:12
二的补码相对于一的补码的主要优点是二的补码只有一个0的值。一个人的补码有一个“正”零和一个“负”零。
接下来,要使用补码进行数字相加,您必须首先执行二进制加法,然后添加一个末尾进位值。
二的补码只有一个0的值,并且不需要进位值。
您还询问了存储值的范围是如何影响的。考虑一个8位整数值,以下是您的最小值和最大值:
Notation Min Max
========== ==== ====
Unsigned: 0 255
One's Comp: -127 +127
Two's Comp: -128 +127参考文献:
发布于 2014-11-28 02:10:16
它的主要优势是:
-0 (11111111)和一个+0 (00000000),即同一个0有两个值。另一方面,在2的补码中,0 (00000000)只有一个值。这是因为+0 --> 00000000
和
-0 --> 00000000 --> 11111111 +1 --> 00000000
1以获得正确答案,例如:+1(00000001) + -1(11111110) -= (11111111)
但是正确的答案是0。为了得到0,我们必须将进位位1添加到结果(11111111 + 1 = 00000000)中。
在2的补码中,结果不需要修改:
+1(00000001)
+
-1(11111111)
-----------------
= 1 00000000发布于 2012-06-16 00:09:01
负整数: 2的补码用于负整数是有意义的。1的补码只是一种计算技术,它可能有助于评估2的补码。2的补码的真正(失败的)对手是负整数的符号大小表示。
无溢出: 1的补码对于负整数没有特殊用法。2的补码是有意义的,因为它可以用于自然的加法和减法运算,而不需要改变位。如果没有发生溢出,结果的符号位就是正确的值。这种表示法中的位数提升很简单,例如,要将8位有符号整数提升到16位,我们只需在其高字节中重复整数值的符号位即可。
符号大小:相反,符号大小表示法只是人类用来表示负整数的方式。位数提升和加法减法算法在这种表示法中有点混乱。
https://stackoverflow.com/questions/11054213
复制相似问题