Binary 两个';s补语,为什么叫“s”;两个“;

Binary 两个';s补语,为什么叫“s”;两个“;,binary,computer-science,Binary,Computer Science,我知道无符号、2的补码、1的补码和符号大小,以及它们之间的区别,但我好奇的是: 为什么它被称为两个(或一个)补码,那么有更一般化的N补码吗 这些天才是如何演绎出如此自然的负数表示法的 当有人意识到通过从0中减去1,并让位滚动,使有符号算术变得更简单,因为不必进行特殊检查来检查数字是否为负数时,二的补码就产生了。其他解决方案会在-1和0之间出现间断。2的补码唯一的奇怪之处是,在你的范围内,负数比正数多出一个。但是,其他的解决方案会给你一些奇怪的东西,比如+0和-0 根据维基百科的说法,这个名字本身

我知道无符号、2的补码、1的补码和符号大小,以及它们之间的区别,但我好奇的是:

  • 为什么它被称为两个(或一个)补码,那么有更一般化的N补码吗
  • 这些天才是如何演绎出如此自然的负数表示法的

  • 当有人意识到通过从
    0
    中减去
    1
    ,并让位滚动,使有符号算术变得更简单,因为不必进行特殊检查来检查数字是否为负数时,二的补码就产生了。其他解决方案会在
    -1
    0
    之间出现间断。2的补码唯一的奇怪之处是,在你的范围内,负数比正数多出一个。但是,其他的解决方案会给你一些奇怪的东西,比如
    +0
    -0

    根据维基百科的说法,这个名字本身来自数学,并且是基于当你有有限的位置时使减法更简单的方法。这个系统实际上是一个“基数补码”,由于二进制是基数2,所以它就变成了“基数补码”。事实证明,“一的补码”是以“减少的基数补码”命名的,即基数减一。如果你看这个小数点,名字后面的含义就更有意义了


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

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

     0846
    -0573
    =0273
    
    首先找到573的9的补码,即9-0959793或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”如何补足
    不过,这是有道理的。

    在十进制编号系统中,基数是

    • 基数补码称为十补码
    • 减缩基数补码称为nines补码
    在二进制编号系统中,基数两个

    • 基数补码称为两个补码
    • 减缩基数补码称为一元补码

    来源:

    “二进制数的二元补码定义为从二的大幂中减去该数得到的值”-唯一要加的是,就像CPU寄存器具有固定位数一样,要推广到基数N,必须在固定位数内工作。为什么它被称为一元补码(带“一”是复数形式,即不是“一的补语”),而“二的补语”有两个是单数形式?@user1596274此评论中的“补语方法”链接提供了一些解释。我相信你可以这样解释:“二的补语”中的“二”指基数(二进制中为2)。在“一”补语中的“一”“是指在这个系统中,你如何对一个数字求反:对于每个数字(通常有多个或多个,因此是复数形式),新的数字是通过从1中减去它来计算的。顺便说一句,同样的情况也适用于存储10个进制数(即十进制数)的系统——因为它在基数2中,所以会有“十的补码”和“九的补码”“2的补码”。一般术语是“基数补码”。这真的很奇怪,为什么称N的补码为从N-1中减去数字的结果?与从N中减去它相反。@phkahler:因为在基数N中,从N-1中减去每个数字,然后加上1,正好对应于从N的适当幂中减去数字。例如,0573的10的补码是9426+1=9427,正好是10000-573。这也是该方法工作的原因:846-573=846+(10000-573)-10000。[琐事:这对应于所谓的“吠陀数学”中的“从九开始,最后一个从十开始”规则: