//输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
//判断负数有问题 负数右移时 高位补充1 会死循环
class Solution {
public:
int NumberOf1(int n)
{
int num = 0;
while(n>0)
{
num += n&1;
n >>= 1;
}
return num;
}
};
//此方法避免死循环
class Solution {
public:
int NumberOf1(int n)
{
int count = 0;
for (int i = 0; i < 32; i++)
{
count += n&1;
n >>= 1;
}
return count;
}
};
//
class Solution {
public:
int NumberOf1(int n)
{
int num = 0;
while(n != 0)
{
num ++;
n &= (n -1);//每次都消除一个1
}
return num;
}
};