我知道^
是Java中的xor运算符。但在以下情况下我无法理解。
int step = 0;
...
step ^=1;
来源:Google Code Jam 2014 (Participant's answer)
文件链接:here
答案 0 :(得分:2)
^
代表XOR运算符。
a ^= b
相当于a = a ^ b
答案 1 :(得分:2)
它位于赋值运算符类别
之下 += -= *= /= %= &= ^= |= <<= >>= >>>=
表示
^=
按位异或和赋值运算符
step ^=1;
与step = step ^ 1;
答案 2 :(得分:1)
step ^=1
表示step = step xor 1
。与评估为step += 1
step = step + 1
类似
所以^ =是短手xor算子。
所以xor表说:
operand1 operand2 output
0 0 0
0 1 1
1 0 1
1 1 0
所以如果我的步数为1,则1 xor 1将为0。
答案 3 :(得分:1)
来自Java教程,
^
假设整数变量A保持60,变量B保持13然后:
二进制 XOR 运算符如果在一个操作数中设置但不是两者都复制该位。(A ^ B)将给出49这是0011 0001
在你的情况下是,
step = step^1
结果得到step=1
答案 4 :(得分:1)
正如其他人所指出的那样,step ^=1
翻转step
的最低位。这使偶数数字变大1,奇数数字变小1。
示例:
0 --> 1
1 --> 0
7 --> 6
6 --> 7
-3 --> -4