1. x &= x-1
含义: 丢弃 x 二进制最右边的1
用途:统计二进制中1的个数
int count = 0;
while(x)
{
x &= x-1 ;
count++;
}
2. n & 1
用途:判断一个整数是奇数还是偶数
n & 1 == 0 n为偶数
n & 1 == 1 n为奇数
3. a ^= b; b ^= a; a ^= b;
用途:交换两数字
4.n & (n - 1)
用途:判断是否是2的n次幂
5. a = ~a + 1
用途:正负数交换