duanlin 发表于 2012-06-09 18:20

今儿个我也来问一个:除法根据什么计算法则被翻译成乘法

我在编译一个简单的例子

int a,b;
a = b/3;

结果指令里把/3变成了 imul 0x55555556 完后再 sar0x1f
哪位老师用数学方法解释下这个。

thanks,any reply are helpful to me.

steven_known 发表于 2012-06-11 10:40

See 《Division by Invariant Integers using Multiplication》,PLDI94 for algorithm.

cjaizss 发表于 2012-06-17 12:02

duanlin 发表于 2012-06-09 18:20 static/image/common/back.gif
我在编译一个简单的例子

int a,b;

最根本还是除以3等于乘以0.333333啊

duanlin 发表于 2012-07-16 12:41

回复 2# steven_known


谢谢!这个正是我想要的。
原来数学原理远比我想象的要复杂。
页: [1]
查看完整版本: 今儿个我也来问一个:除法根据什么计算法则被翻译成乘法