C/C++代码优化的一些总结

1、%(取余)操作可用&(位与)运算代替

当取余的分母为2的整倍数时,可用位与&运算取代,如a%2可用a&1取代,a%4可用a&3取代,a%8可用a&7取代...

分析:分母为2的整倍数,则当表示为二进制时,必然只有一位为1而其余全为0,由此,当某个数表示为二进制时,高于/等于该位的部分一定是该分母的整倍数,低于该位的部分则是余数。因此,要求余数,则通过将低于该位的所有位都置1来提取。亦即,如果低于该位的位数为2位,即二进制数11,即为十进制数3。

猜你喜欢

转载自www.cnblogs.com/avin/p/9172619.html