《编写高质量代码:改善c程序代码的125个建议》——建议12-4:用移位运算实现乘除法运算

本节书摘来自华章计算机《编写高质量代码:改善c程序代码的125个建议》一书中的第2章,建议12-4作者:马 伟 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

建议12-4:用移位运算实现乘除法运算

用移位运算来实现乘除法运算的方法,相信大家并不陌生,实际上有很多C编译器都能够自动地做好这个优化。通常,如果需要乘以或除以2n,都可以用移位的方法代替。
例如:

a=a*2;
b=b/2;

可以修改为如下形式:

a=a<<1; 
b=b>>1;

其中,除以2等价于右移1位,乘以2 等价于左移1位。同理,除以4等价于右移2位,乘以4 等价于左移2位;除以8等价于右移3位,乘以8 等价于左移3位,以此类推。
其实,利用上面的原理,只要是乘以或除以一个整数,均可以用移位运算的方法来得到结果,例如:

a=a*5;

可以将其分解为a(4+1),即a4+a*1。由此,我们就可以很简单地得到下面的程序表
达式:

a=(a<<2)+a
上一篇:浅析拷贝构造函数


下一篇:Salesforce: getContentAsPDF()在lightning mode下报错