moc*_*ino 26 binary computer-science
我知道无符号,两个补码,一个补码和符号幅度,以及它们之间的区别,但我很好奇的是:
sta*_*san 34
补出来时,有人意识到通过减去"走出负面" 1
从0
和让rollunder实际上是由符号算术简单,因为没有特殊的检查有位做检查,如果数字是负数或不是.其他解决方案让您在-1
和之间不连续0
.两个补码的唯一奇怪之处在于,在你的范围内你得到的负数比正数要多一个.但是,随后,其他的解决方案给你奇怪的事情喜欢+0
和-0
.
根据维基百科的说法,这个名字本身来自于数学,并且基于在数量有限的地方使减法更简单的方法.该系统实际上是一个"基数补充",由于二进制是基数2,这就变成了"二进制补码".事实证明,"一个补码"是以"基数补偿减少"命名的,即基数减一.如果你看这个十进制,名字背后的含义更有意义.
你可以在其他基地做同样的事情.对于十进制,你将有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"的补充是否有意义.