取一个 int 数的二进制表示的第 k 位: 12345int n = 42;int k = 2;// 将 n 右移 k 位,再与 1n >> k & 1; 把一个 int 数的二进制表示中最右边的一个 1 干掉: 12int n = 42; // 101010int m = n & (n - 1); // 101000 lowbit(x)lowbit(x)lowbit(x) 返回 x 的最后一位 1。 例如:12=(1100)212 = (1100)_212=(1100)2,lowbit(12)=(100)2=4lowbit(12) = (100)_2 = 4lowbit(12)=(100)2=4;14=(1110)214 = (1110)_214=(1110)2,lowbit(14)=(10)2=2lowbit(14) = (10)_2 = 2lowbit(14)=(10)2=2 x & (~x+1) <==> x & -x 123int lowbit(x) { return x & (-x);}