//输入一个整数,输出该数二进制表示中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;
}
};
计数二进制中1的数量

本文介绍了一种计算整数(包括正数和负数)二进制表示中1的数量的方法。提供了三种不同的C++实现方式,避免了负数处理时可能出现的死循环问题。
4万+

被折叠的 条评论
为什么被折叠?



