C语言 统计一个数的二进制中1的个数 求程序

C语言 统计一个数的二进制中1的个数 求程序
C语言 统计一个数的二进制中1的个数 求程序

没人回答就我来献丑吧

int n=0,z=0,b=1;
scanf_s("%d",n);
for(int i=0;i<32;i++)
{
    if(n&b)>0 z++;
    b*=2;
}
printf_s("%d",z);

代码前后自己补充

可以把这个数字和1进行&运算,结果为1说明最低位是1,之后对这个数进行右移1位的操作,直到这个数为0.

#include <stdio.h>

int main() {
    int  num,sum=0;
    scanf("%d",&num);
    
    while(num!=0)
    {
        if(num & 1 == 1)
        {
            sum++;
        }
        num >>= 1;
    }
    printf("%d\n",sum);
    
    return 0;
}