还有就是空间占用
恐怕将来还存在移植问题
10进制移植到64位平台是很困难的
面临改动进制的可能
二进制很可能就改动几个底层汇编就可以了
用10进制移植到64位平台同二进制是一样的,
把一些宏定义作相应修改就可以了(在32位平台下开发时就应考虑到未来的移植问题)。
另外,两者空间占用也非常接近。 $10^9 // 2^32 = 0.23283064365386962890625$ 同一个大数 N,
若用 10^9 进制表示,需要 |__{|~log_10(N)~|+8}/{9}__|xx4 个字节,
若用 2^32 进制表示,需要 |__{|~log_2(N)~|+31}/{32}__|xx4 个字节,
两者之比约为:{log_10(N)}/{9}:{log_2(N)}/{32} = 32/9log_10(2) ~~ 1.0703
所以空间耗用几乎相等。 :)
如果那么算应该这么写
$\frac{32}{9log_2 10} = 1.0703288734719331385377382923538$ :)
如果考虑硬件限制,就存在极大的区别了
比如硬件只能存取4GB内存
那差别就是绝对的了 大数计算可计算的能力通常是指:它可参与计算的数的最大位数(或bit数),
即与可表达的最大数的对数成正比,而不是它本身! 我的意思是说,如果内存受限
那采取10进制就存在最大可计算数字远小于二进制的情况 没有一个人或者一个应用程序需要使用一个数,这个数的占用的字节数达到内存的容量。实际应用中,一般需要在内存中同时保存几个数,如果内存不够,就仿造apfloat,将大数保存到磁盘,在运算时,将其一部分载入内存。 :)
计算圆周率
页:
1
[2]