DSP

a/1024与a>>10的区别

2019-07-13 18:59发布

在DSP优化过程中通常有一般都用移位来做除法运算,从而提高运算速度,但是当变量为负值时,移位得到的结果跟除法得到的结果不一样。         int   a;         int   b;           b = a/1024; 可以写为:         b = a>>10;   如果a可以为负值,就不能这样简单的改写了,应该这样改:        int sign = a >> 31;          b = (abs(a)>>10)*sign;   这样还是很耗时,但也找不到更好的办法。