二進制中1的個數

劍指offer第11題:
輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。

理解:

本題可以用最直接的方法,讓1同最低位做與運算,如果結果不爲0,說明這一位是1,計數器加1;另外一種方法是讓輸入n同(n-1)做與運算,這樣每次運算可以消除一個“1”,同樣可以計算“1”的個數。這種方法的效率更高,代碼如下:

public class Solution {
    public int NumberOf1(int n) {
        int count = 0;
        while(n != 0){
            n = n & (n-1);
            count++;
        }
        return count;
    }
}
知識點:
  • 位運算;
  • 位與運算
發佈了64 篇原創文章 · 獲贊 95 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章