题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
public class Solution {
public int NumberOf1(int n) {
int cnt = 0;
if (n == 0) {
return 0;
} else if (n > 0) {
while (n != 0) {
if (n % 2 == 1) cnt++;
n /= 2;
}
} else {
boolean flag = true;
for (int i = 0; i < 32; i++) {
if (flag && n % 2 == -1) {
cnt++;
flag = false;
}
if (!flag && n % 2 == 0) {
cnt++;
}
n /= 2;
}
}
return cnt;
}
}