1、求n的第k位数字: n >> k & 1
2、返回n的最后一位1:lowbit(n) = n & -n
例如101000,返回1000
10010,返回10
因为-x = ~x + 1
所以x & (~x + 1),那么x末尾的0取反后全变成1,最后一位1变成0,再加1就挨个进位变成0,直到最后1一个1的位置是1。
101000 —取反—> 010111 —加1—> 011000
101000 & 011000 = 1000
利用lowbit(n)可以快速求x中1的个数,每次减去lowbit,直到x为0为止,这样就不用遍历整个x。