实现一个函数。输入一个整数,输出二进制表示1的个数
// 弊端 ,负数将陷入死循环
int numberOf1(int n){
int count = 0;
while (n) {
if (n&1) {
count++;
}
n = n>>1;
}
return count;
}
int numberOf2(int n){
int count = 0;
unsigned int flag = 1;
while (flag) {
if (n&flag) {
count ++;
}
flag = flag << 1;
这里减少移动的次数,已经比较完,没有必要再移动啦
if (flag > n) {
break;
}
}
return count;
}
int numberOf3(int n){
int count = 0;
while (n) {
++count;
n = n&(n-1);
}
return count;
}