首页 文章

两个补充,为什么名称“两个”

提问于
浏览
24

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

  • 为什么's called two' s(或') complement, so is there a more generalize N' s补码?

  • 这些天才以哪种方式推断出这种代表负数的自然方式?

3 回答

  • 0

    两个's complement came about when someone realized that '从负 0 减去 1 并让比特滚动实际上使得带符号算术更简单,因为不需要进行特殊检查来检查数字是否为负 . 其他解决方案会在 -10 之间产生不连续性 . 两个补码的唯一奇怪之处在于,在你的范围内你得到的负数比正数要多一个 . 但是,其他解决方案会给你一些奇怪的东西,比如 +0-0 .

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

    Method of Complements (Wikipedia)

  • 31

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

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

    0846
    -0573
    =0273
    

    首先找到573的9的补码,即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位10的补码中最负值? 5000!

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

  • 8

    在十进制编号系统中, radixten

    • radix complement 被称为 ten's complement

    • diminished radix complement 被称为 nines' complement

    在二进制编号系统中, radixtwo

    • radix complement 被称为 two's complement

    • diminished radix complement 被称为 ones' complement

    资料来源:https://en.wikipedia.org/wiki/Method_of_complements

相关问题