题目描述 输入一个整数,输出该数二进制表示中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;
}
本文介绍了两种计算整数二进制表示中1的数量的方法。第一种方法通过位移和按位与运算实现,第二种方法利用n&(n-1)移除最低位的1。
746

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



