位运算
运算符
~ 按位非(NOT)(一元运算) & 按位与(AND) | 按位或(OR) ^ 按位异或(XOR) >> 右移 >>> 右移,左边空出的位以0填充 << 左移 &= 按位与赋值 |= 按位或赋值 ^= 按位异或赋值 >>= 右移赋值 >>>= 右移赋值,左边空出的位以0填充 <<= 左移赋值
优先级
1 ()[] 2 ++(后缀) --(后缀) 3 ++(前缀) --(前缀) +(正) -(负) ! ~ instanceof 4 New(类型) 5 * / % 6 +(加) -(减) 7 >> >>> << 8 > < >= <= 9 == != 10 & 11 ^ 12 1 13 && 14 11 15 ?: 16 = += -= *= /= %= ^= &= 1= <<= >>= >>>=
判断一个书是否为2的n次方
i & (i - 1) == 0
Bitmap
int num = 0; // 设置第n位 num |= 1 << n // 清空第n位 num &= ~(1 << n) //判断n位为1 num & (1 << n) != 0 // 清空多位 num &= ~(1 << m | 1 << n)