求数字n中1的个数
int number_of_1(int n){
int count = 0;
unsigned int flag = 1;
while(flag){
if(n & flag)
count++;
flag = flag << 1;
}
return count;
}
//另一种解法
//一个整数减去1之后再和原来的整数做与运算,得到的结果相当于是把整数的二进制表示中的最右边一个1变成0
int number_of_1(int n){
int count = 0;
while(n){
count++;
n = (n-1)&n;
}
return count;
}