位运算

n的二进制表示里第k位是多少,从个位开始数

1. 先把第k位移到最后一位 n >> k

2. 看个位是多少 x&1

n >> k & 1

 

lowbit(x):返回x的最后一位1

x = 1010 返回 10

x = 101000 返回 1000

int lowbit(x)
{
    return x & -x; // 补码:取反+1 (~x + 1)
}

lowbit()应用:统计x的二进制表示1的个数

 

posted @ 2019-07-10 16:38  roov  阅读(2)  评论(0编辑  收藏  举报