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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP