题解 | #求int型正整数在内存中存储时1的个数#
求int型正整数在内存中存储时1的个数
http://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9
计算有多少个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;
}