与 & (全1为1,有0为0)
判断奇偶数
奇数:二进制最后一位一定为 1 偶数:二进制最后一位一定为 0
public static boolean check(int m){
return (m&1)==1;
}
判断 m 是否为 2 的 x 次方
若 m 为 2 的 x 次方 : m 的二进制只有最高位为 1 ,其余全为 0 ,(m-1) 的二进制除最高位都为 1.
public static boolean check(int m){
return m&(m-1)==0;
}
异或 ^ (相同为0,不同为1)
找到数组中只出现了一次的数
按位异或:相同为 0,不同为 1
x^x=0;
0^x=x;
a^b^c=a^c^b;
public static int num(int[] s){
int ans = 0;
for(int i=0;i<s.length;i++){
ans = ans ^ s[i];
}
return ans;
}
移位 >> 和<<
8>>1 == 4
4>>1 == 2
2<<1 == 4
4<<1 == 8
n >> m == n / (2 ^ m)
n << m == n * (2 ^ m)