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));
}
}
不足之處歡迎批評討論!