0

你知道一种算法或一种方法来找出以 N 为底的数字的补码吗?

      For example number 001112 which is in base 3 .

谢谢

4

2 回答 2

1

对于具有 k 位数字的数字,从 (N k ) N中减去它(当然,执行以 N 为底的减法)。

于 2013-03-08T15:47:36.920 回答
0

有关补码的定义,请参见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 的补码n1001011111n-n00000, 这可以解释为-n.
我认为对于任何基地都是如此。

于 2013-03-08T15:40:15.473 回答