用按位运算符编写的这个条件到底有什么作用?

n00*_*123 1 c bit-manipulation bitwise-operators

以下条件在 C 中有效检查了什么:

if(a & (1<<b)) 
Run Code Online (Sandbox Code Playgroud)

我一直在绞尽脑汁,但我找不到模式。有什么帮助吗?我也看到这在竞争性编程中使用了很多,谁能解释一下何时以及为什么使用它?

Deg*_*taf 5

它正在检查是否设置了b第 1 位a

1<<b将移位单个设置位b时间,以便仅b设置第 th位中的一位。

然后&将执行按位和。因为我们已经知道设置在 中的唯一位1<<b,要么设置在 中a,在这种情况下我们得到1<<b,或者不是,在这种情况下我们得到0