記《判斷一個整數是否是奇數》的思考

哪兒看到的文章

知乎上看到這篇文章: 鏈接

題目

判斷一個整數是否是奇數, 按如下方法給出方法體.

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的指數取模可優化成位運算

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章