你知道一种算法或一种方法来找出以 N 为底的数字的补码吗?
For example number 001112 which is in base 3 .
谢谢
你知道一种算法或一种方法来找出以 N 为底的数字的补码吗?
For example number 001112 which is in base 3 .
谢谢
对于具有 k 位数字的数字,从 (N k ) N中减去它(当然,执行以 N 为底的减法)。
有关补码的定义,请参见http://www.enggpedia.com/computer-engineering-encyclopedia/dictionary/dgital-logic-design/1603-complements-types-of-complements-radix-a-diminished-radix-complement .
在您的示例中,补码为 3^6 - 001112(base 3) = (333333+1-001112)(base 3) = (332221+1)(base 3) = 332222。
编辑:
下面的评论当然是对的。很抱歉发布这样一个错误的例子。让我尝试重新表述我想说的话(如果我再次错了,请纠正我):
你的例子,以基数 3 表示,是:
1000000
- 001112
--------
= 221111
问题是是否应该添加最后一个 1。
如果只有无符号数,则不需要加 1,但补码没有算术意义。
如果一个有符号数,补码可以解释为原数的一种负数,而不是负数本身。以 2为底的示例:
如果n = 01101
,则1 的补码是。如果我们将两者相加,结果当然不为零。因此, 的1 的补码是NOT 。但是如果我们加上一个最终的 1,我们得到,即零。因此,构建1 的补码并添加 1 的结果称为2 的补码n
10010
11111
n
-n
00000
, 这可以解释为-n
.
我认为对于任何基地都是如此。