If statement if语句中的位运算符

If statement if语句中的位运算符,if-statement,operators,bit-manipulation,conditional-statements,bitwise-operators,If Statement,Operators,Bit Manipulation,Conditional Statements,Bitwise Operators,在查看代码时,我看到了这个 for(i=0; i<n; i++) { for(j=0; j<n; j++) { if(i & (1<<j)) { //code } } } for(i=0;i它对从0到n的所有值进行循环,并对每个值进行循环: 它在值中的每个位上循环。如果设置了值: 它执行//code 让我们检查一下复杂的部分: if(i & (1<<j)) 请注意

在查看代码时,我看到了这个

for(i=0; i<n; i++)
{
    for(j=0; j<n; j++)
    {
    if(i & (1<<j))
       {
         //code
       }
    }
}

for(i=0;i它对从
0
n
的所有值进行循环,并对每个值进行循环:
它在值中的每个位上循环。如果设置了值:
它执行
//code

让我们检查一下复杂的部分:

if(i & (1<<j))
请注意二进制文件中的1如何镜像代码触发的j值


请注意,如果
n>=32
,则它会尝试将值移动太远,这是未定义的行为。请确保不会发生这种情况。

请注意,此代码仅在
n
时有效。好的,您可以解释一下i&2^j将如何产生结果吗?
i binary     js
0    000   
1    001     0
2    010        1
3    011     0, 1
4    100           2
5    101     0,    2
6    110        1, 2
etc...
31 11111     0, 1, 2, 3, 4,