首页 文章

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

提问于
浏览
23

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

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

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

3 回答

  • 0

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

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

    Method of Complements (Wikipedia)

  • 29

    你可以在其他基地做同样的事情 . 使用十进制,你将得到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

相关问题