class Solution
{
public:
int NumberOf1(int n)
{
if(n>0)
{
int SSSS=0;
int m;
int a[100000];
int k=0;
while(n)
{
m=n%2;
n/=2;
a[k++]=m;
}
for(int i=0; i<k; i++)
{
if(a[k-i-1]==1)
{
SSSS++;
}
}
return SSSS;
}
else if(n<0)
{
int SSS=0;
int z=-n;
int m;
int a[100000];
int k=0;
while(z)
{
m=z%2;
z=z/2;
a[k++]=m;
}
string s;
for(int i=0; i<32-k; i++)
{
s+='1';
}
string str;
for(int i=0; i<k; i++)
{
str+=char(abs(a[k-i-1]+48));
}
for(int i=0; i<k; i++)
{
if(str[i]=='0')
{
str[i]='1';
}
else
{
str[i]='0';
}
}
string sss=s+str;
long long S=0,K=1;
for(int i=sss.size()-1; i>=0; i--)
{
S=K*(int(sss[i])-48)+S;
K*=2;
}
long long M;
long long A[100000];
long long k1=0;
long long SUM=S+1;
while(SUM)
{
M=(SUM)%2;
(SUM)/=2;
A[k1++]=M;
}
for(int z=0; z<k1; z++)
{
if(A[k1-z-1]==1)
{
SSS++;
}
}
return SSS;
}
else
{
return 0;
}
}
};