时间限制:1秒 空间限制:32768K 热度指数:307298
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
class Solution {
public:
int NumberOf1(int n) {
int sum=0,flag=1;
while(flag){
if(n&flag)sum++;
flag<<=1;
}
return sum;
}
};
《剑指offer》P80:(n-1)&n→Change the rightmost 1 of the integer to 0(Under the binary)
class Solution {
public:
int NumberOf1(int n) {
int sum=0;
while(n){
sum++;
n=(n-1)&n;
}
return sum;
}
};