题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
代码
class Solution {
public:
int NumberOf1(int n) {
//正数统计1的个数,负数统计0的个数
int ans = 0, t = n;
if (n >= 0) {
while (t) {
if (t & 1) {
++ans;
}
t >>= 1;
}
return ans;
} else {
while (t != -1) {
if (!(t & 1)) {
++ans;
}
t >>= 1;
}
return 32 - ans;
}
}
};