将基数 10 转换为基数 X 的算法背后的逻辑



以下算法背后的原理是什么:

从十进制转换为另一个基数
的算法设 n 为十进制数。
设 m 为我们要转换为的数字,最初为空。我们将从右到左组成它。
设 b 作为我们要转换为的数字的基数。
重复直到 n 变为 0
将 n 除以 b,让结果为 d,余数为 r。
将余数 r 写为 b 的最左边数字。
设 d 为 n 的新值。

语句:余数r是结果的最后一位数字。

实际上,将n分为两部分:可被r整除的部分和其余部分。我们得到n = d * b + r 0 <= r < b.

在基b中,符号是n = c_k * b^k + ... + c_1 * b^1 + c_0 * b^0。因为除了c_0 * b^0之外的一切都可以被b整除,所以等式r = c_0是平凡的。


对于其余数字,重写

n = c_k * b^k + ... + c_1 * b^1 + c_0 * b^0

n = (c_k * b^{k-1} + ... + c_1 * b^0) * b + c_0 * b^0 .

另一方面

n = d * b + r .

紧接着,

d = c_k * b^{k-1} + ... + c_1 * b^0 .

因此,要找到除最后一个数字之外的所有数字,我们必须解决相同的问题,但要解决d < n而不是n 。整体正确性现在通过n归纳来微不足道。

最新更新