天天看點

JZ11二進制中1的個數

如果一個數不為0,那它的二進制數一定含有1

例子:如 n =10

則n=0000…1010, n-1=0000…0111, 相與的結果是0000…1000,

//效果是把原來最右邊的1清除,依次類推

public class Solution {
    public int NumberOf1(int n) {

        int num = 0;
         while (n != 0) {//如果一個數不為0,那它的二進制數一定含有1
            num++;//有1是以先+1,再把最右邊的1清除
            //若n=0000...1010,  n-1=0000...0111,  相與的結果是0000...1000,
            //效果是把原來最右邊的1清除,依次類推
            n &= (n - 1);
        }
        return num;
    }
}
           

繼續閱讀