1<<k c++符合,java符合 都可以用变量和常数
(i>>k)&1 //k=0的时候就是最低位
java 和 c++ 不用加括号,因为移位运算符的优先级很低
lowbit(x)=x&-x=2^k; //(k是x末尾连续0的个数,例如4末尾两个0,lowbit(4)=2^2=4) //也可以理解为x的最后一位1的权重
可以将x中的最后一位1移除 eg: 6&5=4