gxqcn 发表于 2008-4-19 08:52:37

原帖由 无心人 于 2008-4-18 14:54 发表 http://images.5d6d.net/dz60/common/back.gif
还有就是空间占用

恐怕将来还存在移植问题
10进制移植到64位平台是很困难的
面临改动进制的可能
二进制很可能就改动几个底层汇编就可以了

用10进制移植到64位平台同二进制是一样的,
把一些宏定义作相应修改就可以了(在32位平台下开发时就应考虑到未来的移植问题)。

另外,两者空间占用也非常接近。

无心人 发表于 2008-4-19 16:13:19

$10^9 // 2^32 = 0.23283064365386962890625$

gxqcn 发表于 2008-4-19 16:31:00

同一个大数 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

所以空间耗用几乎相等。

无心人 发表于 2008-4-19 16:36:31

:)

如果那么算应该这么写
$\frac{32}{9log_2 10} = 1.0703288734719331385377382923538$

无心人 发表于 2008-4-19 16:37:54

:)

如果考虑硬件限制,就存在极大的区别了

比如硬件只能存取4GB内存
那差别就是绝对的了

gxqcn 发表于 2008-4-19 16:54:48

大数计算可计算的能力通常是指:它可参与计算的数的最大位数(或bit数),
即与可表达的最大数的对数成正比,而不是它本身!

无心人 发表于 2008-4-19 16:56:43

我的意思是说,如果内存受限
那采取10进制就存在最大可计算数字远小于二进制的情况

liangbch 发表于 2008-4-20 10:32:56

 没有一个人或者一个应用程序需要使用一个数,这个数的占用的字节数达到内存的容量。实际应用中,一般需要在内存中同时保存几个数,如果内存不够,就仿造apfloat,将大数保存到磁盘,在运算时,将其一部分载入内存。

无心人 发表于 2008-4-20 14:08:16

:)

计算圆周率
页: 1 [2]
查看完整版本: B计划之长乘法讨论