【问题标题】:Logic behind the algorithm for converting base 10 to base X将基数 10 转换为基数 X 的算法背后的逻辑
【发布时间】:2018-01-21 19:28:20
【问题描述】:
以下算法背后的基本原理是什么:
从十进制转换为另一个基数的算法
设 n 为十进制数。
让 m 是我们要转换的数字,最初为空。我们将从右到左进行创作。
让 b 是我们要转换的数字的基数。
重复直到 n 变为 0
n 除以 b,结果为 d,余数为 r。
将余数 r 写为 b 的最左边的数字。
令 d 为 n 的新值。
【问题讨论】:
标签:
algorithm
bit-manipulation
base-conversion
【解决方案1】:
声明:余数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 的归纳,现在可以轻松得出总体正确性。