给定一个数n,求它的最低位1构成的数字lowbit(n)
例如:
4的最低位1构成的数字为4
5的最低位1构成的数字为1
6的最低位1构成的数字为2
7的最低位1构成的数字为1
8的最低位1构成的数字为8
求法:lowbit(n) = n & (-n)
注意:如果不想求最低位1构成的数字,而是相求除了最低位1之外的其它数位构成的数字怎么办?
例如:5的二进制表示为 0101 lowbit(5) = 1 n & (n -1) = 4 可以求其他位构成的数字大小
用途1:求一个整数二进制位为1的总个数
int bitCount(int num) {int ans = 0, x = num;while (x != 0) {ans++;x -= lowbit(x);}return ans;}int lowbit(int x) {return x & -x;}
