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
广告