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

标签 algorithm bit-manipulation base-conversion

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

从十进制转换为另一个基数的算法
令 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 归纳得出.

关于algorithm - 将基数 10 转换为基数 X 的算法背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48370818/

相关文章:

algorithm - 带有一些操作的双向链表

algorithm - 大O算法效率对比

c - 为什么要分两步进行位移?

c - C : how to convert from 2^N to N? 中的位旋转

google-sheets - 从 10 进制转换为 3 进制

php - base_convert 数字映射为字母

c++ - 如何有效地检索数字的第一个十进制数字

objective-c - 了解按位与运算符

algorithm - 找到所有四元组 [a, b, c, d] 其中 a^3 + b^3 = c^3 + d^3 when 1 <= a, b, c or d <= 10000