位运算概览
1 2 3 4 5 6 7
   | 符号 描述	 运算规则 &	 与	    两个位都为1时,结果才为1 |	 或	    两个位都为0时,结果才为0 ^	 异或	两个位相同为0,相异为1 ~	 取反	0变1,1变0 <<	 左移	各二进位全部左移若干位,高位丢弃,低位补0 >>	 右移	各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)
   | 
 
求n的二进制第k位是多少
这里&1判断n是否为奇数
①n为奇数时,对应的二进制数最低位一定为1,&1的结果就是1.
②n为偶数时,相应的最低位为0,n&1的结果就是0.
这里等价于 (n>>k)%2
统计n的二进制中有多少个1
x&-x
(-x)=~x+1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   | 
 
 
 
 
 
  int lowbit(int x){ 	return x&-x; }  int cnt=0; 	while(a){ 		a-=lowbit(a); 		cnt++; 	} 	cout<<cnt;
 
  |