public class Solution {
public int NumberOf1(int n) {
/*
原理:通过位移(与运算)来统计整数中与1的个数,判断哪个位置是否是1,
则让它与一个整数(那个位置为1,其他的位置都为0)进行与运算。
如果结果为0,则那个位置是0;否则为1.
例如:10--->1010,辅助变量(temp)每进行一次与运算都需要右移一位
1010 & 1 = 0;
1010 & 10 = 1;
1010 & 100 = 0;
1010 & 1000 = 1;
*/
int count = 0;//计数器
int temp = 1;//辅助变量
for(int i =0;i<32;i++){
if((temp&n) != 0){//与运算
count++;
}
temp <<= 1;//右移一位
}
return count;
}
}