Java Program to Check if K-th Bit is Set or Not

2025年5月8日 | 阅读 4 分钟

在计算机编程中,数字通常用二进制表示,其中每个位(数字)可以是 0 或 1。一个数字的 k-th 位对应于位置 k 的位,最右边的位(最低有效位)被计为位置 0。

要确定 **k-th 位** 是 **已设置**(1)还是 **未设置**(0),我们使用位运算。这些运算使我们能够有效地检查和操作数字的各个位。

问题陈述

给定一个数字 **(n)** 和一个位号 **(k)。** 我们需要检查数字 **n** 的 **kth** 索引位是否已设置。位的顺序应从 LSB 侧开始索引 0,直到二进制表示中的数字。

已设置:如果位是 1

未设置:如果它是 0

让我们通过一个例子来理解。

K-th 位是否已设置的示例

示例 1

输入: n=7, k=2

输出:已设置

说明: 7 在 二进制 中表示为 111。位置 2(从 0 开始计数)的位是 1,表示 **已设置。**

示例 2

输入>: n=4, k=0

输出>:未设置

说明>: 4 在二进制中表示为 100。从 LSB 开始计数的位置 0 的位是 0,因此它是 **未设置。**

方法:使用左移运算

此方法利用左移运算符(<<)生成一个 k-th 位已设置的掩码。然后,在数字和掩码之间执行按位 AND 运算(&),以确定 k-th 位是否已设置。

算法

步骤 1:将 1 左移 k 位以创建 k-th 位的掩码。

步骤 2:对数字 n 和创建的掩码执行按位 AND 运算。

步骤 3:如果结果不为零,则表示 k-th 位已激活为 1。

步骤 4:如果结果为零,则表示 k-th 位未设置为 1。

步骤 5:如果 k-th 位已激活,则打印“已设置”;否则,打印“未设置”。

让我们在一个 Java 程序中实现上述算法。

输出

 
The 3-th bit is SET.   

时间复杂度:上述代码的时间复杂度为 **O(1)。**

辅助空间复杂度:上述代码的辅助空间复杂度为 **O(1)。**

方法:使用右移运算符

方法 使用右移运算符(>>)将 k-th 位移到最低有效位。然后,检查最低有效位以查看 k-th 位是否已设置。

算法

步骤 1:使用 n >> k 将数字 n 右移 k 位。

步骤 2:结果的最低有效位(LSB)将是 n 的 k-th 位。

步骤 3:如果 n >> k 的结果是奇数,则 k-th 位已设置;否则,则未设置。

步骤 4:如果最低有效位是 1,则打印“已设置”,否则打印“未设置”。

让我们在 Java 程序中实现上述算法。

文件名:CheckKthBit.java

输出

 
The 3-th bit is SET.   

时间复杂度:上述代码的时间复杂度为 **O(1)。**

辅助空间复杂度:上述代码的辅助空间复杂度为 **O(1)。**


下一个主题Java 中的起伏数