在其他基数中表示负数
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 表示,否则不清楚数字是正数还是负数。
我如何表示非 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 表示,否则不清楚数字是正数还是负数。