>>>和>>的区别
System.out.println(Integer.toBinaryString(-1));
System.out.println(Integer.toBinaryString(-1 >> 16));
System.out.println(Integer.toBinaryString(-1 >>> 16));
保留原值的方法
val | 0
等于 val
(因为任何数与0进行按位或操作都会保持不变)。
val & 1
也等于 val
(因为1与1按位与得1,0与1按位与得0)。
获取index[i]
boolean getBit(int num, int i) {
return ((num & (1 << i)) != 0);
}

设置index[i]为1
int setBit(int num, int i){
return num | (1 << i);
}

设置index[i]为0
int clearBit(int num, int i){
int mask = ~(1 << i);
return num & mask;
}

设置index[i]为新值v
int updateBit(int num, int i, int v){
int mask = ~(1 << i);
return (num & mask) | (v << i);
}
