11、二進制中1的個數_java

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

public class Solution {
    public int NumberOf1(int n) {
        int count = 0;
        //每次循環劃去末尾一個1。
        // 1101&1100=1100
        //1111&1110=1110
        //1000&0111=0
        //1011&1010=1010
        //n-1 與n相比,n所退位的那位數字之後皆是0,之前的數字與n-1相同,而n-1退位的那一位爲0.
        //故n-1&n,會使得n中最末尾的1變成0
        while (n != 0) {
            ++count;
            n = (n - 1) & n;
        }
        return count;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章