rayfekeeper 发表于 2009-12-13 14:15:00

怎么求2的n次方的最高位和次高位(十进制)?

怎么求2的n次方的最高位和次高位(十进制)?
如,2^4=16,最高位是 "1",次高位是"6"。

1,n可以不限定在32或者64之内,如 n=10000000 也是合法的。

(希望身体力行)

问题可以转化为:“在32位系统中,如何纯软件实现将64位甚至1024位或者更高位的整型数据格式化为十进制输出?” (从csdn上转下来的,没看到精彩的算法,贴到这里来交流。)

gxqcn 发表于 2009-12-13 14:43:59

对于特别大的指数,估计得通过对数运算进行转换吧。

无心人 发表于 2009-12-14 07:48:38

如果只考虑大数进制转换
存在分治法的快速算法
速度是O(nlogn)量级的

rayfekeeper 发表于 2009-12-14 23:12:40

经过我的搞笑算法,2的1亿次幂的前三位数是368,谁来检验一下。

mathe 发表于 2009-12-15 09:53:07

(09:52) gp > \p 50
   realprecision = 57 significant digits (50 digits displayed)
(09:52) gp > log(2)/log(10)*100000000
%1 = 30102999.566398119521373889472449302676818988146211
(09:52) gp > %1-30102999
%2 = 0.56639811952137388947244930267681898814621085413104
(09:52) gp > 10^%2
%3 = 3.6846659369804587632090923909842219150699658122675
(09:52) gp >

wayne 发表于 2009-12-15 12:40:34

mathe和gp,很强大!

qq250 发表于 2010-1-17 16:46:19

2^1000000,最高位是 "9",次高位是"9"。
上百度百科看进制转换,按照上面的方法转就可以了,不过可能效率有点低
本人写的一个小软件大整数进制转换器就是根据此方法转的
大整数进制转换器在华军上有发布,你可以参考一下

数学星空 发表于 2010-1-17 16:59:59

2^1000000~~9.900656229295898250697923616301903250733
624241787567332866396114531709483309486103054614551236000614*10^301029
页: [1]
查看完整版本: 怎么求2的n次方的最高位和次高位(十进制)?