- 问题描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
- 解决方案
代码如下:
public int NumberOf1(int n) {
if(n == 0)
return 0;
boolean flag = false;
if(n < 0){
n = (1 << 31) + n;
flag = true;
}
int res = 0;
while(n > 0){
if(n % 2 == 1)
res ++;
n = n / 2;
}
return flag ? res + 1 : res;
}