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

    xiaoxiao2023-06-02  192

    本节书摘来自华章计算机《编写高质量代码:改善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
    最新回复(0)