LinCode-第365题 二进制中有多少个1

描述:

          计算在一个 32 位的整数的二进制表式中有多少个 1.

样例

         给定 32 (100000),返回 1

         给定 5 (101),返回 2

        给定 1023 (111111111),返回 9

分析:

  要获得一个整数的二进制有多少个“1”,需要知道整数是通过除2取余来获得该整数的二进制。所以可以采用一个计数器,对num循环除2取余数,如果余数为“1”,计数器加1,获得该整数的二进制中“1”的个数

代码实现:


 public int countOnes(int num) {
        // write your code here
         int count = 0;
            //如果num小于0需要将num转换成无符号整数
            if(num<0){
		 long unum = num & Integer.MAX_VALUE; 
		      unum |= 0x80000000L;
		    
		      while(unum>0){
		          if(unum%2==1){
				count++;
			  }
			  unum/=2;
		      }
	      }else{
	            while(num>0){
			if(num%2==1){
			     count++;
			}
			num/=2;
		    }
	      }
		 return count;
}



猜你喜欢

转载自blog.csdn.net/lin962792501/article/details/52444710