1. 程式人生 > >【劍指offer】二進位制中1的個數(java)

【劍指offer】二進位制中1的個數(java)

問題描述:輸入一個二進位制數,我們記為num,計算出num中有幾個1,結果用count儲存

思路分析:如二進位制數11011,將其減1,得11010,再與原來的數做與運算 11011&11010,得11010,此二進位制數相比原二進位制數,數中的1少了一個。重複此過程,直至該數變為0,則結束迴圈。

java程式碼實現:

/**
 * Created by Administrator on 2018/11/21.
 */
public class Solution {
    public static int NumberOf1(int n) {
        int count=0;
        while(n!=0){
            int n_=n-1;
            n=n&n_;
            count++;
        }
        return count;
    }
    public static void main(String args[]){
        int n=17;
       System.out.println(NumberOf1(n));
    }
}

輸出結果: