7. 二進制中1的個數

7. 二進制中1的個數

題目描述

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

題目鏈接

思路:用Integer.toBinaryString()方法獲取補碼形式。正數的補碼和原碼一致。

Java實現:

import java.util.ArrayList;

/**
 * @Classname NumberOf1
 * @Description 輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼錶示。
 * @Date 2019/7/4 10:40
 * @Created by 超
 */
public class NumberOf1 {
    //處理不了負數
    public int NumberOf(int n) {
        ArrayList<Integer> arrayList = new ArrayList<Integer>();
        if (n == 0 || n == 1) {
            return n;
        } else {
            while (n/2 != 0) {
                int num = 0;
                arrayList.add(n%2);
                n = n/2;
            }
            int total = 1;
            for (int i = 0; i <= arrayList.size()-1; i++) {
                if (arrayList.get(i) == 1) {
                    total += 1;
                }
            }
            return total;
        }
    }

    public int NumberOf2(int n) {
        char[] c = Integer.toBinaryString(n).toCharArray();
        int cout = 0;
        for (int i = 0; i < c.length; i++) {
            if (c[i] == '1') {
                 cout += 1;
            }
        }
        return cout;
    }

    public static void main(String[] args) {
        NumberOf1 numberOf1 = new NumberOf1();
        System.out.println(numberOf1.NumberOf2(-1));
        //System.out.println(numberOf1.NumberOf(7));
    }
}

不足之處歡迎批評討論!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章