base-9 编号系统是使用九位数字表示数字的系统。也就是说,
231,085 = 2 × 105
+ 3 × 104
+ 1 × 103
+ 0 × 102
+ 8 × 101
+ 5 × 100
在 base-10 系统中,也就是十进制编号系统。但是在以 9 为底的系统中,您将其写成 9 的幂的整数倍,而不是如上所示的 10 的幂:
381,881 = 3 × 95
+ 8 × 94
+ 1 × 93 (顺便说一句,您的教练给了您错误的数字。它是 381,881 而不是 382,871)
+ 8 × 92
+ 8 × 91
+ 1 × 90
请注意,以 10 为底的表示形式(即 2、3、1、0、8 和 5)中 10 的幂的系数始终是十进制数字之一(从零到九)。同样,以 9 为底的表示形式(3、8、1、8、8、1)中 9 的幂的系数始终是九个十进制数字之一(从零到八)。再多的话,你就必须把它带过去,就像你在小学学习的多位数加法一样。
现在,对于将 base-10 表示转换为 base-9 的算法,首先看一下从 base-10 转换为 base-2 的 Converting a decimal number into binary。唯一的区别是你会除以 9 的幂,而不是像这个问题那样的 2 的幂。
按照链接问题中的示例,
[231085] [53938] [1450] [721] [73] [1]
÷59049 ÷6561 ÷729 ÷81 ÷9 ÷1
[3] [8] [1] [8] [8] [1]
如果您想系统地将一个以 10 为底的整数分解为其数字,您可以遵循以下模式:
- 将数字除以 10(底数)。
- 除法的余数将是下一个最低有效数字。
- 重复使用新的除数(即第 1 步除法的商),直到商达到 0。
所以,对于 231,085,迭代如下:
Step: 1 2 3 4 5 6
-------------------------------------------------------------
Number: 231,085 23,108 2,310 231 23 2
÷10 ÷10 ÷10 ÷10 ÷10 ÷10
-------------------------------------------------------------
Quotient: 23,108 2,310 231 23 2 0 <-- Quotient reached 0, so stop
Remainder: 5 8 0 1 3 2
如您所见,每一步中的余数是数字 231,085 中的下一个最低有效数字。这意味着 5 是最低有效数字。然后是 8,实际上是 8 × 10 = 80,并且 10 > 1;然后是 0 × 100,以及 100 > 10,等等。
现在,如果您要在每个步骤中除以 9 而不是上面的 10,那么表格将类似于
Step: 1 2 3 4 5 6
-------------------------------------------------------------
Number: 231,085 25,676 2,852 316 35 3
÷9 ÷9 ÷9 ÷9 ÷9 ÷9
-------------------------------------------------------------
Quotient: 25,676 2,852 316 35 3 0
Remainder: 1 8 8 1 8 3
现在余数的顺序与以 10 为底的数字 231,085 的以 9 为底的表示形式相反。
这个答案实际上并没有给你基本转换的代码,但是上面概述了基本逻辑,并且算法存在于互联网上(可能针对不同的基,但你需要更改的只是基在师)。