You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断给定数字中指定比特位的值为1还是0?

判断数字中指定比特位的值(1或0)

判断单个比特位的值,核心用**按位与(&)**操作配合掩码实现,步骤如下:

核心逻辑

  1. 生成掩码:将数字1的二进制位左移指定索引位(1 << bit_index),得到仅目标位为1、其余位为0的掩码。
  2. 按位与运算:原数字和掩码执行按位与操作。若结果非0,说明目标位是1;结果为0则目标位是0。

示例验证

以你给出的数字0b00001101(十进制13)为例:

  • 检查索引0:掩码为1 << 0 = 0b00000001,13 & 1 = 1(非0)→ 该位为1(true)
  • 检查索引1:掩码为1 << 1 = 0b00000010,13 & 2 = 0 → 该位为0(false)
  • 检查索引2:掩码为1 << 2 = 0b00000100,13 & 4 = 4(非0)→ 该位为1(true)

代码实现

Python

def check_bit(num, bit_index):
    mask = 1 << bit_index
    return (num & mask) != 0

# 测试
target_num = 0b00001101
print(check_bit(target_num, 0))  # 输出 True
print(check_bit(target_num, 1))  # 输出 False

C语言

#include <stdbool.h>
#include <stdio.h>

bool check_bit(unsigned int num, int bit_index) {
    unsigned int mask = 1u << bit_index;
    return (num & mask) != 0;
}

int main() {
    unsigned int target_num = 0b00001101;
    printf("%d\n", check_bit(target_num, 0)); // 输出 1(对应true)
    printf("%d\n", check_bit(target_num, 1)); // 输出 0(对应false)
    return 0;
}

注意事项

  • 比特位索引通常从右往左计数,最右侧的最低位为索引0,和你的示例规则一致。
  • 处理无符号整数时更安全,避免符号位干扰(比如C语言中用unsigned int)。

内容的提问来源于stack exchange,提问作者Jonas Salys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 02:35:55