-1

在 php 中,以下操作数如何工作?

^ |

例如$a = 11; $b = 7; echo $a ^ $b;

输出 12

    $a =    11;
$b =    7;
echo $a | $b;

输出 15

我不知道为什么在每种情况下。有人可以阐明一下吗?

4

3 回答 3

4

这些是按位XOROR

$a = 11; // 1011
$b =  7; // 0111

通过异或,每个不同$a的位$b变成一个1,相同的位变成一个0

$a ^ $b: // 1100 = 12

OR中的每个位都是 a1或成为 a $a,在这种情况下是所有位。$b1

$a | $b: // 1111 = 15

还有一个AND等价物:$a & $b: // 0011 = 3

PHP 的位运算符的完整列表

于 2012-05-09T21:41:49.540 回答
3

它们是按位运算符。

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.';
于 2012-05-09T21:39:37.563 回答
0

它们是按位运算符,这意味着它们对二进制数进行运算。

111011二进制的,并且70111.

^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

于 2012-05-09T21:44:43.283 回答