有没有将十进制数改为三元的方法? 我的意思是我不想使用modulo和divide方法,我有非常大的十进制数,类似于128123832812381835828638486384863486 ............. 1237127317237等。
也不想使用bigints。
有什么方法吗?
答案 0 :(得分:4)
您不必使用divide / modulo。相反,迭代输入数字,从低到高。对于每个数字位置,首先计算输出表示中的1000....000
(它是前一次幂10的10倍)。然后将该结果乘以数字,并累积到输出表示中。
您将需要在输出表示中执行乘法和加法的例程。乘法例程可以根据加法例程来编写。
示例:强>
将246(base-10)转换为base-3。
首先初始化输出“accumulator”a = "0"
。
初始化“乘数”m = "1"
。
另请注意,输出表示中的10是"101"
。
第一个数字是6 ,即d = "20"
。
t = d * m = "20" * "1" = "20"
。a = a + t = "0" + "20" = "20"
。m = m * "101" = "1" * "101" = "101"
。 第二个数字为4 ,即d = "11"
。
t = d * m = "11" * "101" = "1111"
。a = a + t = "20" + "1111" = "1201"
。m = m * "101" = "101" * "101" = "10201"
。 第三位是2 ,即d = "2"
。
t = d * m = "2" * "10201" = "21102"
。a = a + t = "1201" + "21102" = "100010"
。答案是"100010"
。