php - 按位运算符 XOR ('^' ) 如何工作?

标签 php bitwise-operators

当我看到以下代码的输出时,我有点困惑:

$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/

相关文章:

Java:检查多个位 vector/位集是否相交的最快方法?

php - 获取 5 分钟前的行

php - 如何从 PHP 7 中的嵌套包含文件中跳出 while 循环?

c - C 中按位运算符的性能

javascript - 为什么移动 0 会 chop 小数?

c# - 如何将 8 个 4 位值编码为 Int32,然后取回这些值?

php - 将 MYSQL 转换为 Wordpress $WPDB

php - 未初始化的字符串偏移量: 62

php - 查询失败 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法

c++ - 为什么 C/C++ 按位异或运算符关心符号?