(1)辗转相除法:
#include <stdio.h>
int main(){
    int a,count = 0;
    scanf("%d",&a);
    while(a){
        if(a % 2 == 1){  //辗转相除法
            count++;
        }
        a /= 2;
    }
    printf("%d\n",count);
    return 0;
}

(2)移位运算:
#include <stdio.h>
int main(){
    int a,count = 0;
    scanf("%d",&a);
    while(a){
        count += a & 1;      //与运算,同 1 为 1
        a = a >> 1;          //与运算一次后,右移一位,将与过的最低位舍弃
    }
    printf("%d\n",count);
    return 0;
}