计算有多少个1,类似于计算该整型数的汉明重量。n&(n-1)的操作表示将n最右边的一个1变为0,重复操作既可计算总共1的个数。

#include <stdio.h>
int main(){
    int n;
    int k = 0;
    scanf("%d",&n);
while(n){
    n&=(n-1);
    k++;
}
    printf("%d",k);
    return 0;
}