一、题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
二、题目分析(引用剑指offer中的解释)
1.注意位移符号的特殊情况
三、具体代码:
public class Solution {
public int NumberOf1(int n) {
// int count=0;
// int flag=1;
// //flag不断左移,溢出int的最大范围后就会等于0
// while(flag!=0){
// if((n&flag)!=0){
// count++;
// }
// flag<<=1;
// }
// return count;
//方法二:最优解:
int count=0;
while(n!=0){
n=n&(n-1);
count++;
}
return count;
}
}