题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
解题思路:利用一个unsigned int flag进行移位并与原数进行&操作,不为零则count加1;
int NumberOf1(int n)
{
int count = 0;
unsigned int flag = 1;
while (flag)
{
if (n & flag)
count++;
flag = flag << 1;
}
return count;
}
解法二:n&(n-1)能够将最后位的1去掉
int NumberOf1(int n) {
int count = 1;
while (n)
{
count++;
n = n & (n - 1);
}
return count;
}