哪兒看到的文章
知乎上看到這篇文章: 鏈接
題目
判斷一個整數是否是奇數, 按如下方法給出方法體.
public boolean isOdd(int i);
思考過程
取餘來判斷
負數怎麼辦
移位運算
按位與(&)
這是終極操作
效率
位運算和取模運算最終效率差不多的原因是什麼?
編譯器會對2的指數取模優化成位運算
取模優化
爲什麼取模會優化成位運算?
首先, '按位與’運算有如下規則:
按位運算時, &0則一定爲0, &1則爲原數.
就有如下推論:
x%2 >>> x&1
x%4 >>> x&3
x%8 >>> x&7
x%n >>> x&(n-1)
結論:
2的指數取模可優化成位運算