计算有多少个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;
}
计算有多少个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;
}