我知道无符号,2的补的补,并签署幅度,以及它们之间的区别,但我很好奇的是:补,为什么叫“两节”
- 为什么它被称为两个(或一个)补码,那么是否有更广义的补码?
- 这些天才在哪个方面演绎出这样一种自然的方式来表示负数?
我知道无符号,2的补的补,并签署幅度,以及它们之间的区别,但我很好奇的是:补,为什么叫“两节”
两个补出来时,有人意识到减去0
1
,让rollunder实际上是由符号算术简单,因为没有特殊的检查都要做检查,如果数字为负或不比特“走出负面” 。其他解决方案会给您在-1
和0
之间的不连续性。唯一带有两个补码的奇怪之处在于,你的范围中会多出一个负数,而不是正数。但是,然后,其他解决方案会给你奇怪的东西,如+0
和-0
。
根据维基百科,这个名字本身来自数学,它的基础是当你的数字有限时,减法变得更简单。该系统实际上是一个“基数补充”,并且由于二进制是基数二,所以这变成了“二补”。事实证明,“补数”被命名为“减小的基数补数”,即基数减1。如果你看这个十进制数,名字背后的含义更有意义。
剩下的唯一要补充的是,就像CPU寄存器具有固定的位数一样,推广到基数N,你必须在固定的数字位数内工作。 – JustJeff 2010-04-09 01:00:59
你可以做同样的事情在其他基地。用十进制数,你会得到9的补码,其中每个数字X被9-X取代,而数字10的补码是9的补码加1。然后,您可以通过添加10的补码来进行相减,假设有固定的数字位数。
一个实例 - 在一个4位系统,给出的减法
0846
-0573
=0273
首先找到9的补的573,其是9-0 9-5 9-7 9-3或9426
的573 10的补是9426 + 1,或9427
现在添加10的补充和扔掉任何执行的4位
0846
+9427 .. 10's complement of 573
= 10273 .. toss the 'overflow' digit
= 0273 .. same answer
显然,这是一个简单的例子。但是这个比喻带有。有趣的是4位十进制补码中最负的值? 5000!
至于词源,我推测术语1的补码是相同意义上的补充,因为从几何的互补角度是90度减去角度 - 也就是说,当您减去给定值时剩下的部分从一些标准值。不过,不知道“2”的补充 是否合理。
“2的补码”,因为它在基数2中。通用术语是“基数补码”。 – dan04 2010-04-09 01:07:58
这真的很奇怪,为什么调用N来补充从N-1中减去数字的结果呢?而不是从N. – phkahler 2010-04-09 01:09:43
@phkahler中减去它:因为在基数N中,从N-1中减去每个数字,然后加上1,完全对应于从适当的N次幂中减去数字。例如,10的补数0573是9426 + 1 = 9427,这正好是10000-573。这也是该方法起作用的原因:846-573 = 846+(10000-573)-10000。 [琐事:这符合所谓的“吠陀数学”中称为“全部来自9,最后来自10”的规则:http://en.wikipedia.org/wiki/Vedic_Mathematics] – ShreevatsaR 2010-04-09 01:25:34
在十进制编号系统,基数是:
在二进制编码系统,该基数是:
“的二进制数的二进制补码被定义为通过从一个大的功率的2减去数而得到的值” - http://en.wikipedia.org/wiki/Two's_complement – Ben 2010-04-09 00:16:30