符號 | 描述 | 運算規則 |
---|---|---|
& | 與 | 兩個位都爲1,結果才爲1 |
l | 或 | 兩個位都爲0,結果才爲0 |
^ | 異或 | 兩個位相同爲0,相異爲1 |
算法中經常使用的位運算操做:算法
解法一:直接與2取模,看結果是否等於0bash
public boolean isEven(int x){
return (x % 2) == 0
}
複製代碼
解法二:判斷一個數是否爲偶數,也就是說判斷該數的二進制數最後一位是否爲0,任何數與1(二進制的1是0001)作與運算,也就是計算該數的最後一位與1作與運算,只有最後一位爲1,那麼就爲奇數,爲0則爲偶數。ui
public static boolean isEven(int x) {
return (x & 1) == 0;
}
複製代碼
思路:2的n次冪的二進制數都有一個規律,就是首位爲1,其他爲都爲0。譬如2--10 ,4--100,8--1000,16--10000等等 而上面例子中的x&(x-1)能夠清零二進制中最低位一個1spa
public boolean IsPowerOf(int n) {
return (n & (n - 1)) == 0;
}
複製代碼