二进制中1的个数

来源:互联网 发布:linux删除当前文件夹 编辑:程序博客网 时间:2024/05/21 03:54

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


原创粉丝点击