思路:把输入正整数不断右移位与1按位与,固定32次,每次如果结果为1,就计数加1.32次后,输出计数值。

#include <stdio.h>

int main(void)
{
    int num;
    int i;
    int count = 0;
    scanf("%d\n", &num);

    for(i=0; i<32; i++)
    {
        if( ((num>>i) & 1) == 1 )
        {
            count ++;
        }
    }
    printf("%d\n",count);

    return 0;
}