天天看點

《編寫高品質代碼:改善c程式代碼的125個建議》——建議12-4:用移位運算實作乘除法運算

本節書摘來自華章計算機《編寫高品質代碼:改善c程式代碼的125個建議》一書中的第2章,建議12-4作者:馬 偉 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

用移位運算來實作乘除法運算的方法,相信大家并不陌生,實際上有很多c編譯器都能夠自動地做好這個優化。通常,如果需要乘以或除以2n,都可以用移位的方法代替。

例如:

可以修改為如下形式:

其中,除以2等價于右移1位,乘以2 等價于左移1位。同理,除以4等價于右移2位,乘以4 等價于左移2位;除以8等價于右移3位,乘以8 等價于左移3位,以此類推。

其實,利用上面的原理,隻要是乘以或除以一個整數,均可以用移位運算的方法來得到結果,例如:

可以将其分解為a(4+1),即a4+a*1。由此,我們就可以很簡單地得到下面的程式表

達式:

繼續閱讀