思路
这道题本来想着要把输入的二进制求解出来,后来发现是没有必要的。我只需要在计算的过程中判断取模的结果是否为1,用一个计数器就可以了。
C语言版本
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int count = 0;
while (1)
{
if (n / 2 == 0)
{
count += 1;
break;
}
if (n % 2 == 1)
{
count += 1;
}
n /= 2;
}
printf("%d\n", count);
return 0;
}
后来看到题目上的考察点是位运算。我想了一下应该还有一种解法。
&的规则是,有0,则为0 ,所以,我们只需让value&1,然后检测最低比特位即可判断出该二进制中有多少个1:
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int count = 0;
while (n)
{
count += n & 1;
n = n >> 1;
}
printf("%d\n", count);
return 0;
} 
京公网安备 11010502036488号