1 // 判断一个数是否为2的n次幂 2 return !(a & (a-1)) 3 // 简单移位操作 4 a<<1 == a*2 5 a>>1 == a/2 6 // 异或操作<相同取反> 7 a^a==0 a^0==a 8 // 把右数第k位变成1 9 a | (1<<(k-1)) 10 // 把右数第k位变成0 11 a & (!(1<<(k-1))) 12 // 第k位取反 13 a ^ (1<<(k-1))
判断一个数二进制中1的个数是奇数还是偶数:
x = x ^ (x>>1); x = x ^ (x>>2); x = x ^ (x>>4); x = x ^ (x>>8); x = x & 1; //x==0为偶;相邻性质.