class Solution {
public:
int NumberOf1(int n) {
int count=0;
while(n)
{
count++;
n=n&(n-1);
}
return count;
}
};
classSolution
{
public:
int NumberOf1(intn) {
int ans = 0;
while(n) {
if(n & 1) ans++;
n = logicalShift(n, 1);
}
return ans;
}
//实现逻辑右移
int logicalShift(int x, int n) {
int tmp = ~(1<< 31); //0x7f ff ff ff
tmp = ((tmp >> n) << 1) + 1; //因为n >= 0,实现tmp >> (n-1)的功能
tmp = tmp & (x >> n); //
return tmp;
}
};