实用的代码优化方法

来源:互联网 发布:南京江宁区网络问政 编辑:程序博客网 时间:2024/05/22 06:06

1.移位比直接乘除效率高

a=a*4; b=b/4; 可以改为: a=a<<2; b=b>>2; 

a=a*9;a=a*7 ;可以改为:a*(8+1);a*(8-1);即 a=(a<<3)+a;a=(a<<3)-a

注意事项:

(1)char、short、int、long、unsigned char、unsigned short、unsigned int、unsigned long都可以进行移位操作;

(2)double、float、bool、long double则不可以进行移位操作。

(3)char、short、int、long这些有符号的数据类型

-----负数左移,符号位始终为1,其他左移

-----负数右移,取绝对值,然后右移,再取相反数

-----正数左移,所有位左移,可能变负数

----正数右移,所有位右移

(4)图像处理中,除以255,在 X属于[0,65536]的范围内误差为零

#define div_255_fast(x)    (((x) + (((x) + 257) >> 8)) >> 8)  

(5)图像处理中,乘以255(x<<8)-x

0 0