一个整数二进制中一的个数
解:对一个二进制数,如果减去1,那么这个二进制数从右向左遍历,第一个出现1的位置到最右边所有的值都会变,也就是1变0,0变1,或者说按位取反,这样我们做这样的操作:n&(n-1),那么得到的结果正好与n相比,从右到左第一个1变成0,这样重复做这样的操作,知道n=0;就能得到1的个数
int number_1(int m){
int temp=0;
while(m){
++temp;
m=(m-1)&m;
}
return temp;
}