lowbit 函数直接应用
public class Solution {
public int NumberOf1(int n) {
int cnt = 0;
while(n != 0){
n -= lowbit(n);
cnt ++;
}
return cnt;
}
private int lowbit(int n){
return n&(-n);
}
}
拓展
- 判断一个数是不是 2 的幂:
一个数是 2 的幂意味着它的二进制表示里面只有一个 1,那么 lowbit(n) == n - 输入两个数 m, n, 求 m 的二进制表示要改变多少位才能得到 n
先求两个数的异或,然后统计 1 的个数