面試題:統計整數的二進制形式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;
  }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章