C ++的追求。关于语法

时间:2018-06-26 00:49:59

标签: c++

我已经在程序中看到了这一行。什么意思?

int a = 0;
a ^= 1 << vector[i][j];

第二行。如果有人可以解释这一点?

2 个答案:

答案 0 :(得分:2)

我认为您想知道运算符^=

^XOR 例如,x ^= x等于x = x ^ x,即0。

上面的代码段中的代码执行移位,然后对结果进行XOR,最后将结果分配给a

示例: a = 0

如果vector[i][j]为2,则1 << 2(按位左移)为100(以二进制表示)。

在右侧,我们有100 ^ 000 == 100,最后是a = 0b100

有用的链接:

答案 1 :(得分:0)

^表示按位XOR 1 << n表示将1左移n次(以位为单位)。因此,如果您有1 << 2,则从二进制的001开始,然后将1位左移2次,使其变为二进制的100(十进制为4)。当我说001100时,请注意,在填满完整的32/64位之前,还有更多的前导0