找回密码
 欢迎注册
楼主: 无心人

[原创] B计划之二进制十进制相互转化算法

[复制链接]
 楼主| 发表于 2008-10-17 13:23:56 | 显示全部楼层
如果程序没有错误,我想我以移位代替除法的设想就是不好实现的了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-10-17 16:01:52 | 显示全部楼层


中午糊涂了
并不需要计算到多少位的
比如10000
只要计算到1/2^64以上
每次只考虑64位的数字就可以了
同样的任何10^k都可以计算出一个移位序列
且找到一个较合适的二进制块长度
这个块长度最好是64的倍数
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-10-17 16:03:56 | 显示全部楼层
如果按64位计算
则1/10000取14 15 17 21 22 24 25 27 28 29 33 35 36 37 39 41 42 46 47 48 52 57 58 61 63
就可以了,共25个项,处理好的话,可以在64步骤内完成
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-10-17 19:35:38 | 显示全部楼层
不好意思,后面几帖读了几遍,但仍不明就里。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-10-17 19:38:17 | 显示全部楼层


就当作我自言自语吧
我想我说的有点无法实现了

所以可能要回归你们算法的思想
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-10-17 19:43:08 | 显示全部楼层
我的意思是没看能懂你的程序,也不明白你这么做的出发点和目的,无限困惑中。。。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-10-17 19:49:26 | 显示全部楼层


我不是说想用移位代替除法么?
我那里是能得到一个2^32内整数的倒数
的二进制表示啊
输出的是二进制小数的位是1的
以小数点右边第一位索引是1
的位的索引

原理是十进制小数转二进制
只要不断乘以2
有进位到个位
表示当前bit是1
否则是0
可以得到无限精度的数字
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2008-10-17 19:55:17 | 显示全部楼层
似乎不划算,效率可能成问题。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2008-10-17 19:58:31 | 显示全部楼层
你的意思是这么做进制转换不划算
还是这么做除法不划算

另外,移位的速度要远远大于加法
这么说吧
数据在内存的复制操作如果时间是1
则移位就应该是1.5
加法则在4以上
乘法在36以上了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2013-6-2 21:55:53 | 显示全部楼层
快速求大整数关于 2^n 的模逆
应该可以用到这里来,这个大整数可以限定在1~2^32-1的奇数。(偶数移位一下)
例如:
3x≡1 (mod 2^32)
得到2863311531
有120/3转化为120*2863311531 (mod 2^32)=40
gmp倒是这么用的,比较好奇,如何快速得到这个逆元。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-3-19 16:46 , Processed in 0.043493 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表