我对编码比较陌生,无论如何我在复制iphone像素技术的教程时遇到了这个if语句,无论如何我不确定它在做什么,所以如果有人能为我解释它会很棒感谢。
for(int j = 0; j < (width * height); j++ )
{
if ( pixels[j] & 0xff000000 )
{
collisionMap[j] |= 1;
}
}
令我困惑的部分是'| ='和单曲'&amp;'标志。这里发生了什么?感谢
答案 0 :(得分:6)
&安培;是bitwise AND.
| =是bitwise OR,并将值分配给collisionMap[j]
。
答案 1 :(得分:4)
他们被称为bitwise operators
collisionMap[j] |= 1
相当于collisionMap[j] = collisionMap[j] | 1
这将确保设置collisionMap[j]
的LSB
答案 2 :(得分:1)
|=
对任一方的值执行按位OR(考虑优先级),将结果放入左侧变量。因此,a |= b
与a = a | b
相同(假设没有C ++运算符重载)。更具体地说,说:
a is 01010000 binary, and
b is 10011001 binary, then after `a |= b`...
a is 11011001.
&
执行按位AND,产生的值只包含两侧值的位。
答案 3 :(得分:0)
单身&amp;按位执行,而|=
运算符执行按位或。