n的lowbit
的意思是在n的二进制位中,最低位的1代表的数字是多少
lowbit(36) ---> 4
100100 ---> 100
步骤
~100100 ---> 011011
(~100100)+1 ---> 011100
((~100100)+1) & 100100 ---> 100
由于负数存储的时候是以补码的形式存储我们可以直接利用n & (-n)
来直接求得lowbit
//可以直接在自己的代码模板中加入这个函数
int lowbit(int n){return n & (-n);}