在PHP中,以下操作数如何工作?
^|
例如 $a = 11;
$b = 7;
echo $a ^ $b;
产出 12
和
$a = 11;
$b = 7;
echo $a | $b;
产出 15
我不确定为什么在每种情况下。有人可以说一些东西吗?
它们是按位 XOR 和 OR。
$a = 11; // 1011
$b = 7; // 0111
使用XOR,$a
和$b
不同的每个位都成为1
,相同的位成为0
。
$a ^ $b: // 1100 = 12
使用OR,每个位在$a
或1
$b
中都是1
,在这种情况下是所有位。
$a | $b: // 1111 = 15
还有一个 AND 等价物:$a & $b: // 0011 = 3
PHP 按位运算符的完整列表。
它们是按位运算符。
http://php.net/manual/en/language.operators.bitwise.php
基本上这些用于二进制数据。这些通常用于在单个整数中组合一系列标志。例如,如果我有两个标志:
FLAG1 = (binary)'1' = (integer)1
FLAG2 = (binary)'10' = (integer)2
我可以使用按位运算符将两者组合在一起:
$combined_flags = FLAG1 | FLAG2 = (binary)'11' = (integer)3
然后我可以检查是否也使用按位运算符设置了其中一个标志:
if ($combined_flags & FLAG1) echo 'flag 1 is set to true.';
它们是按位运算符,这意味着它们对二进制数进行操作。
11
以二进制形式1011
,7
0111
。
^
是XOR
. 对于两个值中的每个位,如果它们不同,则返回 1。
11 ^ 7 = 1011 ^ 0111 = 1100 = 12
|
OR
. 对于两个值中的每个位,如果至少有一个为 1,则返回 1。
11 | 7 = 1011 | 0111 = 1111 = 15
更多信息: http://php.net/manual/en/language.operators.bitwise.php