题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
class Solution {
public:
int NumberOf1(int n) {
int size = 32;
int flag=0;
if(n<0){
flag = 1;
n=-n;
}
vector<int>vt(size);
for(int i=0;i<size;i++){
vt[i]=0;
}
int j=0;
while(n>0){
vt[j]=(n%2);
n=n/2;
j++;
}
if(flag == 1) {
int i;
for(i=0;i<size;i++){
vt[i]=(vt[i]+1)%2;
}
int index = 1;
for(i=0;i<size;i++){
vt[i]=vt[i]+index;
index = vt[i]/2;
vt[i] = vt[i]%2;
}
vt[size-1]=1;
}
int sum = 0;
for(int i=0;i<size;i++){
if(vt[i]==1){
sum++;
}
}
return sum;
}
};