PHP synatax这些是做什么的?“^”和“|”


php synatax what do these do? '^' and '|'

在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,每个位在$a1 $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以二进制形式10117 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