Java程式計算整數中設定的位數


在本文中,給定一個整數值,任務是計算給定整數的設定位數的總數。為此任務,我們需要將給定值轉換為其對應的二進位制表示。

整數值的二進位制數表示為 0 和 1 的組合。這裡,數字 1 在計算機術語中被稱為設定位

問題陳述

Java中編寫一個程式來計算整數中的設定位數 -

輸入 

int num = 10

輸出

binary representation = 1010
set bit count = 2

由於給定整數值的二進位制等價物中 1 的數量為 2,因此設定位的總數為 2。

不同的方法

以下是計算整數中設定位的不同方法 -

使用 Brian Kernighan 演算法計算設定位

Brian Kernighan 演算法中,我們使用一個while 迴圈,它遍歷二進位制數的每一位並取消設定該數的最右邊設定位。透過計算在該數字變為零之前執行此操作的次數,將給出整數中設定位的總數。

  • 定義一個方法set_bits_count(int num),它接收一個整數作為輸入。
  • 將變數 count 初始化為 0,透過它我們可以跟蹤設定位的數量。
  • 使用一個while 迴圈,只要 num 大於 0 就執行。
  • 在迴圈內部,執行操作 num &= (num - 1); 以關閉最右邊的設定位。
  • 每次執行該操作時遞增 count 變數,並繼續迴圈直到 num 變為 0。
  • 返回 count 的值,它表示設定位的總數。
  • 在主方法中,我們將用一個值初始化一個整數變數 num。
  • 呼叫set_bits_count(num)方法並列印結果。

例子

在此示例中,我們使用 Brian Kernighan 演算法來計算設定位 -

import java.io.*;
public class Demo{
   static int set_bits_count(int num){
      int count = 0;
      while (num > 0){
         num &= (num - 1);
         count++;
      }
      return count;
   }
   public static void main(String args[]){
      int num =11;
      System.out.println("The number of set bits in 11 is ");
      System.out.println(set_bits_count(num));
   }
}

輸出 

The number of set bits in 11 is
3

使用按位運算計算設定位

在此方法中,使用按位與 (&)與 1 一起檢查給定整數值的最低有效位是否已設定。如果已設定,則遞增設定位的計數,然後將給定整數值右移一位。

  • 在主方法中,使用給定的整數值初始化一個整數變數intVal
  • 將變數totCount初始化為 0。這將跟蹤設定位的數量。
  • 使用一個 while 迴圈,只要intVal大於 0 就執行。
  • 在迴圈內部,使用按位與運算子 (&)與 1 一起檢查最低有效位是否已設定。將結果新增到 totCount。
  • 使用>>=運算子將intVal右移一位以移動到下一位。
  • 繼續迴圈直到intVal變為 0。
  • 列印totCount的值,它表示設定位的總數。

例子

在以下示例中,我們使用按位運算來計算設定位的總數 -

public class Main {
   public static void main(String[] args) {
      // given integer value
      int intVal = 15;  
      int totCount = 0;
	  // counting set bits
      while (intVal > 0) {
         totCount += intVal & 1;
         intVal >>= 1;
      }
      System.out.println("Total count of set bits: " + totCount);
   }
}

輸出

Total count of set bits: 4

使用 Integer.bitCount() 計算設定位

Integer.bitCount()方法將整數值作為引數,並返回指定整數值的二進位制表示形式中 1 的位數。

  • 在主方法中,使用給定的整數值初始化一個整數變數intVal
  • 使用Integer.bitCount(intVal) 方法計算 intVal 的二進位制表示形式中設定位的數量。
  • 將結果儲存在變數totCount中。
  • 列印totCount的值,它表示設定位的總數。

例子

以下示例顯示瞭如何使用Integer.bitCount() 方法計算整數中的位總數 -

public class Main {
   public static void main(String[] args) {
      // given integer value
      int intVal = 14; 
      // using the bitcount() method
      int totCount = Integer.bitCount(intVal);
      // printing the result
      System.out.println("Total count of set bits = " + totCount);
   }
}

輸出

Total count of set bits = 3

更新於: 2024年9月11日

2K+ 次檢視

開啟您的職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.