如何找到N的补数?

Ren*_*h G 6 algorithm bit-manipulation

我想找到9的数字补码但失败了.

我尝试了1和2的补充方法,但没有效果.

找出N的数字补码的常用方法是什么?

小智 8

n补充使用:(简单的三步法).

假设512 - 96 = ?(两个数字都以基数n给出,比如基数:14).

  1. 求(第二个要减去的数字)的n-1补码96. 13的补充099DDD - 096 = D47(因为A = 10,B = 11,C = 12,D = 13).

  2. n通过添加补码值1来查找补n - 1码.14的补充是D47 + 1 = D48.

  3. 512使用n's补码(D48)添加第一个数字()并保留进位.512 + D48 = 45A(随身携带1).

校验:

512(14 base) = 996(10 base)
96(14 base) = 132(10 base)
996-132 = 864(base 10) = 45A(base 14) HENCE CHECKED.
Run Code Online (Sandbox Code Playgroud)


Mar*_*ers 7

通过从9中减去每个数字,找到基数10中的9的补数.

所以45(= ... 000045)变为54(= ... 999954).

Ten的补码只是9的补码加1.所以... 000045变为(... 999954 + 1)= ... 999955.

关于维基百科的更多信息.

  • @Renjith:Binary只有1的补码和2的补码; base-10只有9位补码和10位补码.如果你在base-53或base-54工作("两个案例有不同的含义并给出不同的答案"),"53的补语"才有意义.据我所知,补码仅用于计算,因此在现实世界中唯一真正重要的是二进制中使用的两个补码(如果你编写代码,偶尔会使用十进制补码)使用BCD编号http://en.wikipedia.org/wiki/Binary-coded_decimal) (2认同)