第一條:利用位運算判斷一個整數是奇數還是偶數。
經常用到一個for循環,當索引i是奇數時執行語句A,偶數時執行語句B。判斷i是奇數還是偶數,可用如下方法:
if(i &1){
//i是奇數情況執行的代碼
}
else{
//i是偶數情況執行的代碼
}
位運算的優先級最低,但是運算速度卻最快,所以用i&1判斷奇偶,要比用i%2==1來判斷大約快4倍。在一個要執行上萬次的for循環里,能明顯提升判斷效率。
第二條:利用位運算,取一個除數是2的正整數次方數的余數。
有時候要做一些取余(模)的運算,而除數恰好是2的次方數常量(因為做程序時,經常會把一些會重復運算的關鍵數值取成2、4、8等),可用如下方法:
取i除以4的余數,用:num=i&3
取i除以8的余數,用:num=i&7
取i除以16的余數,用:num=i&15
。。。。。。
依次類推
第三條:利用位運算,實現對一個數字做除法后再取整(除數是2的正整數次方數)。
這個可能更常用,有時候算坐標,有時候算索引之類,方法如下:
比如,把number除以4的結果取整,一般寫成int(number/4)
用位運算,寫成number>>2即可.
運算效率會高得多哦!
