首页
社区
课程
招聘
[分享]将除法转换为乘法的MagicNumber
2009-2-6 03:40 12232

[分享]将除法转换为乘法的MagicNumber

2009-2-6 03:40
12232
收藏
点赞7
打赏
分享
最新回复 (7)
雪    币: 2108
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
书呆彭 6 2009-2-6 07:36
2
0
沙发沙发。有用有用。谢谢谢谢。
雪    币: 2071
活跃值: (77)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 4 2009-2-6 08:05
3
0
天才在看的网页
路过~~
雪    币: 1270
活跃值: (104)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
AsmDebuger 1 2009-2-6 08:41
4
0
建议Intel内嵌微码优化。
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
abest 2009-2-6 13:38
5
0
[QUOTE=Bughoho;573946]将除法转换为乘法的MagicNumber



http://www.thesolver.it/Manuali/Factotum/source/062.htm[/QUOTE]

惭愧,不知道MagicNumber有什么作用.
雪    币: 1270
活跃值: (104)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
AsmDebuger 1 2009-2-6 14:03
6
0
刚刚看到:《加密与解密》(第三版)P96,提到了这个所谓的MagicNumber:2E8BA2E9,
其实质书中的例子已经讲的很清楚了:用(A×2E8BA2E9)>>(32+1) 即:(A×2E8BA2E9)/2^32+1
即:A*0.09090909...  来近似代替A/11,因为A/11 = A * 1/11,而
1/11 约等于 0.09090909...
所以有表中的11的MagicNumber是2E8BA2E9的说法,一般这个数由编译器自动计算得到。
记住这些值,碰到这样的程序时会更容易理解些。个人看法,不足之处,请见谅。
雪    币: 8188
活跃值: (4243)
能力值: ( LV15,RANK:2459 )
在线值:
发帖
回帖
粉丝
ccfer 16 2009-2-6 14:06
7
0
参考这个帖子:
http://bbs.pediy.com/showthread.php?t=68849
雪    币: 1270
活跃值: (104)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
AsmDebuger 1 2009-2-6 14:25
8
0
在这里想起了关于“π”的约率和密率,http://baike.baidu.com/view/3287.htm,寻找一个最相近的值来代替一个无理数。
游客
登录 | 注册 方可回帖
返回