面试题:统计整数的二进制形式1的个数

 题:请编写一个函数,让它把一个指定整数的二进制表示形式中的“1”的个数统计出来。

这题在JAVA下有几个解法:

1。设计一个把十进制转换为二进制的算法,再对其统计。

2。用Integer.toBinaryString方法,先把十进制转换为二进制,再对其统计。

3。因为整数在计算机中的表示形式就是二进制,所以我们无需对其转换,运用位操作符可直接操作它的二进制数。我们把1作为掩码,与要统计的整数进行&运算,就可判断整数的最低位是否为1了,然后对整数进行右移>>>1位(注意:是>>>,不是>>,因为如果整数是负数,前者在移位后会全补上零,这是JAVA特有的符号,而后者会根据符号位进行补全)。 

  public static int numOnesInBinary(int num){
      
int count = 0;
      
while(num != 0){
          
if((num & 1== 1) count++;
          num 
>>>= 1;
      }

      
return count;
  }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章