在其他基数中表示负数

Represent negative numbers in other bases

我如何表示非 10 基数的负数,例如 基数 20。我知道如何使用二进制补码在二进制中执行此操作,但是 二进制补码在其他基数中的等价物是什么

例如,在基数 20 中,denary 数 100 表示为 50。我如何让这个 50 签名?我是否需要将它转换为二进制,二进制补码,然后将其转换回 base-20?好像有点啰嗦。

在这种情况下,负基数 20 50(基数 10 为 100) 将是 7g,并且 positive 就是 50。但这是在其他基数中表示负数的标准方式吗?

二进制补码的推广是radix complement

The radix complement of an digit number y in radix is, by definition, −. The radix complement is most easily obtained by adding 1 to the diminished radix complement, which is (−1)−

然而,我们必须同意是什么。例如,在二进制中我们可能会说我们有 32 位,所以在这种情况下 = 32。

所以对于base-20的例子我们应该做一些定义:

  • 数字是“0123456789ℎ”。
  • 为10(任意选择,但必须选择)

我们还可以定义每个数字的“(减少的)互补数字”是什么。它是添加到第一个时将始终产生最大数字的数字(在本例中为 20)。例如 220 + ℎ20 = 20,所以ℎ20是2[=的补集35=]20,反之亦然

对于你的示例号码5020,我们进行如下处理:

将 -digit 表示的每个数字替换为其补码:

所以 000000005020 的减补码变成 20

要得到 5020 的否定,我们只需要对其加 1:

−5020 = 020

重要的是不要减少此表示以使用更少的数字——我们必须坚持使用 -digit 表示,否则不清楚数字是正数还是负数。