有没有办法在不使用任何中间基数的情况下将数字从 Base B1 转换为 Base B2。
例如:
214 从基数 5 到基数 16,无需先将其转换为十进制,然后再将十进制转换为十六进制。
--
谢谢
阿洛克克。
最佳答案
要在没有中间基数的情况下将 214base5 转换为基数 16,您“只”必须知道如何直接以基数 5 计算。
首先,您需要一张以 5 为底的 16 位数字的表格(在将 10 为底数转换为以 16 为底数时,您需要一个类似的表格,只是这样更容易记住!)。此表很容易创建 - 只需从 0 开始,每行以 5 为基数递增,直到达到以 16 为基数的 f
。
base 16 | base 5
--------+--------
0 | 0
1 | 1
2 | 2
3 | 3
4 | 4
5 | 10
6 | 11
7 | 12
8 | 13
9 | 14
a | 20
b | 21
c | 22
d | 23
e | 24
f | 30
现在您只需要反复除以 16(即 31base5)。我们现在回想我们的小学时代,并使用长除法(如果这看起来很难,那是因为没有人让你学习以 5 为底的时间表!):
第 1 步:
______
31 ) 214
第 2 步:
3
______
31 ) 214 -
143
第 3 步:
3
_____
31 ) 214 -
143
----
21
所以 214base5 除以 31base5 的结果是 3base5 余数 21base5。
这意味着base16中的最低有效位是21base5,您可以在表格中找到bbase16。除法的结果是 3base5 - 如果它大于 30base5 那么我们将再次除法 - 但事实并非如此,所以这意味着最重要的数字是(使用表)3base16.
所以答案是 214base5 = 3bbase16。
关于java - 将数字从 Base B1 转换为 Base B2 而不使用任何中间基数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3513793/