题目描述
输入一个整数,输出该数的二进制表示中1的个数。其中负数用补码表示
解题思路
class Solution {
public:
int NumberOf1(int n) {
if(n == INT_MIN) return 1;
vector<int> vect(32);
int flag = (n<0)?1:0,ans = 0,i=31;
n = (n<0)?-n:n;
while(n){
vect[i--]=n%2;
n /= 2;
}
if(flag){
for(auto &it : vect) it ^= 1;
++vect[31];
for(int i=31;i>0;++i){
if(vect[i]<=1) break;
vect[i] = 0;
++vect[i-1];
}
}
for(auto it : vect) if(it == 1) ++ans;
return ans;
}
};