解题思路

位运算计算有多少个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进制的位运算。