法一(逻辑右移):
注:c/c++对有符号整数不适用:
class Solution {
public static int count1(int n) {
int count = 0;
while(n != 0) {
count += n&1;
n >>>= 1; //这里可以改用 n /= 2;但效率低不建议使用
}
return count;
}
}
法二:
二进制有几个一运行几次:
class Solution {
public static int count1(int n) {
int count = 0;
while(n != 0) {
count ++;
n &= n-1; //这里可以改用 n /= 2;但效率低不建议使用
}
return count;
}
}