补数

时间:2010-10-04 16:23:17

标签: math

我在维基百科上读到:
“通常,对于基数r的补码编码,r是数字系统的基数(基数),m个数字的整数部分和n个数字的小数部分,则数字0的r的补数≤N

N ** =(r ^ m - N)mod(r ^ m)“

我不明白数字的数量,即m取决于基数r?
例如:如果我想找到97的100的补数,那么m = 2或m = 1?
对于m = 2,我得到答案为9903
对于m = 1,我得到答案为03
我应该采取m = 2还是m = 1?

1 个答案:

答案 0 :(得分:1)

关于method of complements的维基百科文章可能会提供比我更好的解释,但我会尝试。

位数不一定取决于基数,而是取决于使用它的上下文。换句话说,5在base-2(即二进制)中没有补码,但 8位 base-2数字中有补码 - 251.这意味着在两个补码中,-5可以表示为0b11111011

同样,97在base-100中没有补充。 具有一位整数,两位整数或n位整数-100的补码。

您可以选择开发一个使用100的补码数的算术机器。如果使用一位数整数,则可以用第97个数字表示-3。如果您更喜欢两位数的整数,-3将由您的第99个数字代表您的第97个数字。


这首先是一个困难的概念,在一个尚未开发的数字系统中是双倍的 - 我还没有看到基础100。 :-)首先尝试在较小的基础上弯曲补充肌肉的方法,十六进制是一个良好的开端。

单位十六进制数中的16的7的补码是9.在两位数字中,它是F9。在三位数字中,它是FF9。因此