首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

劍指 Offer 面試題 10:二進制中 1 的個數(Java 實現)

     編輯:Java 相關知識

題目

實現函數,輸入一個整數,輸出該數二進制表示中 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;
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved