二進制中1的個數

題目描述
輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。

思路:
如果一個二進制整數不爲 0 , 那它必定含有 1 ,如果這個數減 1 ,那麼最右邊 1 就會變成 0 ,原來在這個 1 後面的 0 都會變成 1 ,其餘位不會受到影響

例如 1101000 , 減 1 得 1100111, 再和原來的數做與運算,得 1100000
按同樣的方法計算一次,得 1000000

所以二進制中 1 的個數,可以通過在n不等於0時 n&(n-1) 的次數得出
以下代碼:

public class Solution {
    public int NumberOf1(int n) {
        
        int sum = 0;
        
        while(n != 0){
            
            n = n&(n-1);
            sum++;
        }
        
        return sum;
        
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章