// 返回x的最后一位1 int lowbit( int x ) { return x & -x; } // 返回x的第k位数字 x >> k & 1;
x&1 代表最低位的值(最右位的值) example: x=10==(1010)2 x&1 == 0 x>>k 表示右移k位, x=10 == 1010 (2进制), k=1; x>>k 表示(1010)2右移了1位 结果为 (101)2 k=2的话 结果为10 (2进制)