符号 | 描述 | 运算规则 |
---|---|---|
& | 与 | 两个位都为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;
}
复制代码