//题目描述: 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
public class Solution
{
public int NumberOf1(int n)
{
int N1 = 0;
if(n > 0) //正整数
{
do
{
N1 += n % 2;
n = n / 2;
}while(n != 0);
}
else if(n == 0)
{
return 0;
}
else if(n > 2147483647|| n < -2147483647) //超出范围
{
return 1;
}
else //负数
{
n = -n;
int [] a = new int[32];
int j, k, i = 0;
do
{
a[i] = n % 2;
n = n / 2;
i++;
}while(n != 0);
for(j = 0; j < 32; j++)
{
if(a[j] == 1)
{
N1++;
break;
}
}
for(k = j; k < 32; k++)
{
if(a[k] == 0) N1++;
}
}
return N1;
}
}