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,