每一位取法
Lowbit(x)
概念
实现了取到x的最后一位1,后面全是0
即给定
有lowbit(x)
返回 10…0,其中第一位1是x的最后一位1
实现
这涉及到计算机运算,实际上就是让 x 与(&) -x
-x是x的相反数,实际上做的是x取反加1,这样一来,原本最后0都变成1,第一个1变成0,加1之后进位,第一个1再次变成1,第一个1的高位保持取反的值不变,与原来的x相与之后,则只留下第一个1和后面的0
用途
- 可用于统计一个数中1的个数,
while(x) x -= lowbit(x), cont ++