位运算

 

运算符

 ~   按位非(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)
原文地址:https://www.cnblogs.com/rilley/p/2593876.html