”&“ 按位与
“|” 按位或
如果两个相应的二进制位只要有一个是1,结果就是1;否则为0。
if(n % 2 == 0) 等价于 if((n&1) == 0) 后者运行效率更高
“<<“ 左位移
向左移一位, 高位丢弃,低位补0
n * 2 == (n << 1)
“>>” 右位移
向右移一位,正数补0,负数补1
n>>1 = n / 2
^ 异或
两个相同的数会变成0,反之是1
void swap(int &a,int &b)
{
a^=b;
b^=a;
a^=b;
}