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+ 次查看

开启您的职业生涯

通过完成课程获得认证

开始
广告