题目描述
输入一个整数,输出该数二进制表示中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; } };