首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2的补码比1的补码的优势?

2的补码比1的补码的优势?
EN

Stack Overflow用户
提问于 2012-06-15 23:55:22
回答 6查看 107.2K关注 0票数 63

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-06-16 00:04:12

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

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

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

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

代码语言:javascript
复制
Notation     Min   Max
==========  ====  ====
Unsigned:      0   255
One's Comp: -127  +127
Two's Comp: -128  +127

参考文献:

  • http://en.wikipedia.org/wiki/Signed_number_representations
  • http://en.wikipedia.org/wiki/Ones%27_complement
  • http://en.wikipedia.org/wiki/Two%27s_complement
票数 68
EN

Stack Overflow用户

发布于 2014-11-28 02:10:16

它的主要优势是:

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

+0 --> 00000000

-0 --> 00000000 --> 11111111 +1 --> 00000000

  • While使用1进行加法或减法等算术运算时,我们必须向结果添加额外的进位位,即1以获得正确答案,例如:

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

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

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

代码语言:javascript
复制
               +1(00000001)
              +
               -1(11111111)
         -----------------
              = 1 00000000
票数 21
EN

Stack Overflow用户

发布于 2012-06-16 00:09:01

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

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

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11054213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档