两个补充,为什么名称"两个"

moc*_*ino 26 binary computer-science

我知道无符号,两个补码,一个补码和符号幅度,以及它们之间的区别,但我很好奇的是:

  1. 为什么它被称为两个(或一个)补码,那么是否有更广义的N的补码?
  2. 这些天才以哪种方式推断出如此自然的方式来表示负数?

sta*_*san 34

补出来时,有人意识到通过减去"走出负面" 10和让rollunder实际上是由符号算术简单,因为没有特殊的检查有位做检查,如果数字是负数或不是.其他解决方案让您在-1和之间不连续0.两个补码的唯一奇怪之处在于,在你的范围内你得到的负数比正数要多一个.但是,随后,其他的解决方案给你奇怪的事情喜欢+0-0.

根据维基百科的说法,这个名字本身来自于数学,并且基于在数量有限的地方使减法更简单的方法.该系统实际上是一个"基数补充",由于二进制是基数2,这就变成了"二进制补码".事实证明,"一个补码"是以"基数补偿减少"命名的,即基数减一.如果你看这个十进制,名字背后的含义更有意义.

补充方法(维基百科)


Jus*_*eff 9

你可以在其他基地做同样的事情.对于十进制,你将有9的补码,其中每个数字X被9-X替换,而数字的10的补码是9的补码加1.然后,您可以通过添加10的补码来减去,假定固定的位数.

一个例子 - 在4位数系统中,给定减法

 0846
-0573
=0273
Run Code Online (Sandbox Code Playgroud)

首先找到9的补码573,即9-0 9-5 9-7 9-3或9426,10
的补码573是9426 + 1,或9427
现在加上10的补码并扔掉任何执行4的数字

   0846
  +9427      .. 10's complement of 573
= 10273      .. toss the 'overflow' digit
=  0273      .. same answer
Run Code Online (Sandbox Code Playgroud)

显然这是一个简单的例子.但这个比喻带来了.有趣的是,4位10的补码中最负值?5000!

至于词源,我推测术语1的补码是相同意义上的补语,因为几何形状的互补角是90度减去角度 - 也就是说,当你从某个标准值中减去给定值时它是剩下的部分.但不确定"2"的补充是否有意义.