当我看到以下代码的输出时,我有点困惑:
$x = "a";
$y = "b";
$x ^= $y;
$y ^= $x;
$x ^= $y;
echo $x; //Got b
echo $y; //Got a
运算符 ^
在这里如何工作?
最佳答案
^ 是“异或”位运算符。它用英语读作“要么”。当且仅当两个位不同时,结果为 1:
1 ^ 0 = 1
1 ^ 1 = 0
0 ^ 0 = 0
稍微简化示例(并使用伪代码):
$x = 0011 //binary
$y = 0010
$x = $x xor $y
//Result: x = 0001
//x = 0001
//y = 0010
$y = $y xor $x
//Result: y = 0011
//x = 0001
//y = 0011
$x = $x xor $y
//Result: x = 0010
PHP 所做的只是将字符串“a”和“b”视为它们的等价整数。
关于php - 按位运算符 XOR ('^' ) 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2674920/