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