實現函數,輸入一個整數,輸出該數二進制表示中 1 的個數。例如 9(1001)有 2 個 1。
利用 n & (n-1) 操作可將最低位的 1 變為 0。重複操作直到數值為 0,操作次數即為 1 的個數。對負數同樣適用(Java int 為 32 位補碼)。
public class No10BitOperation {
public static void main(String[] args) {
int number1 = 11;
System.out.println("整數 11 二進制中 1 的個數:" + numberOfOne(number1));
int number2 = -11;
System.out.println("整數 -11 二進制中 1 的個數:" + numberOfOne(number2));
}
public static int numberOfOne(int number) {
int count = 0;
while (number != 0) {
count++;
number = number & (number - 1);
}
return count;
}
}