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

C++中条件语句if(n & 1 << b)的含义及逻辑解析

理解if (n & 1 << b)的条件判断逻辑

嘿,我来帮你拆解这个看起来有点陌生的条件语句!其实它是一个很常用的二进制位判断技巧,咱们一步步来理清楚:

第一步:明确操作符优先级

首先要注意,C++里左移操作符<<的优先级比按位与&高,所以这个表达式其实等价于:

if (n & (1 << b))

先计算1 << b,再把结果和n做按位与操作。

第二步:拆解1 << b的含义

1 << b是把数字1的二进制表示向左移动b位,最终得到的是一个只有第b位为1,其余所有位都是0的整数。举几个例子:

  • 当b=0时,1<<0 = 1,二进制是000...0001
  • 当b=2时,1<<2 = 4,二进制是000...0100
  • 当b=5时,1<<5 = 32,二进制是000...100000

第三步:按位与&的作用

按位与操作的规则是:两个二进制位都为1时,结果为1;否则为0。

当我们把n和1<<b的结果做按位与时:

  • 如果n的第b位是1,那么按位与的结果就是1<<b(非零值),在if判断中会被视为true
  • 如果n的第b位是0,那么按位与的结果就是0,在if判断中会被视为false

换句话说,这个条件语句的核心作用就是:判断整数n的二进制表示中,第b位(从0开始计数)是否为1。

举个实际例子验证

比如n=5(二进制是101):

  • 当b=0:1<<0=1,5&1=1(非零),条件成立→第0位是1
  • 当b=1:1<<1=2,5&2=0,条件不成立→第1位是0
  • 当b=2:1<<2=4,5&4=4(非零),条件成立→第2位是1

另外,你可能还会看到等价的写法if ((n >> b) & 1)——把n右移b位后和1按位与,同样是判断第b位是否为1,两种写法都很常用,看个人习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:26:03