怎么求2的n次方的最高位和次高位(十进制)?
怎么求2的n次方的最高位和次高位(十进制)?如,2^4=16,最高位是 "1",次高位是"6"。
1,n可以不限定在32或者64之内,如 n=10000000 也是合法的。
(希望身体力行)
问题可以转化为:“在32位系统中,如何纯软件实现将64位甚至1024位或者更高位的整型数据格式化为十进制输出?” (从csdn上转下来的,没看到精彩的算法,贴到这里来交流。) 对于特别大的指数,估计得通过对数运算进行转换吧。 如果只考虑大数进制转换
存在分治法的快速算法
速度是O(nlogn)量级的 经过我的搞笑算法,2的1亿次幂的前三位数是368,谁来检验一下。 (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 > mathe和gp,很强大! 2^1000000,最高位是 "9",次高位是"9"。
上百度百科看进制转换,按照上面的方法转就可以了,不过可能效率有点低
本人写的一个小软件大整数进制转换器就是根据此方法转的
大整数进制转换器在华军上有发布,你可以参考一下 2^1000000~~9.900656229295898250697923616301903250733
624241787567332866396114531709483309486103054614551236000614*10^301029
页:
[1]