解题思路
位运算计算有多少个1.
与1 &运算。最低位1则结果为1,为0则结果为0.
然后向右位移一位。
代码
#include<stdio.h>
int main()
{
int n, count, i;
while (scanf("%d", &n) != EOF) {
count = 0;
for (i = 1; i < 32; i++) {
count += (n & 1);
n = n >> 1;
}
printf("%d\n", count);
}
return 0;
}这一题要分下下数据的特性,数据在计算机中以2进制存储,要么0要么1.正好有基于2进制的位运算。

京公网安备 11010502036488号