1847123212

单片机除法指令优化

0
阅读(1890)

除10的方法:

Y = A / 10 = A *(1/10) = A * 0.1

可以同时把被除数和除数同时放在K倍,
Y = A /10 = ( A * K) /(K * 10)

可以寻找一个K ,B值,使得
(K / B) 约等于 ( K /( 10 * K ) )

其中B = 2^n (1,2,4,8,16......)

除10 运算,取 K = 205 ,B = 2048 即
205 / 2048 = 0.10009765625 约等于 0.1

因为 1/2048 相当于右移 11 位

所以除10 可以表示为 : Y = (A * 205 ) >> 11; (其中 A 要小于 10000 为宜)

除100 ,取 K = 82 ,B =8192
Y = (A * 82) >> 13 ; (其中 A 要小于 10 0000 为宜)

除1000 ,取K = 1049 ,B = 1048576
Y = (A * 1049)>> 20 (其中 A 要小于 100 0000 为宜)

除10000,取K = 839 ,B = 8388608
Y = (A * 839) >> 23 (其中 A 要小于 1000 0000 为宜)