单片机除法指令优化
0赞
发表于 7/2/2017 12:29:23 PM
阅读(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 为宜)
