32

我的问题与运营商有关。今天我研究了运营商。有一种困惑。在 PHP 中,“or”和“xor”有什么区别。我知道它们都与布尔表达式有关。但是找不到原来的区别。

请任何人帮助更清楚地理解它。

4

6 回答 6

59

它与互斥有关。xor是独家的。or是包容的。

真值表比较

$x $y ($x or $y) ($x xor $y)
0  0    0          0
1  0    1          1
0  1    1          1
1  1    1          0

注意:最后一种情况的区别。xor仅当其中一个或为时为真,但不是两者都为真(如)。$x$yor

于 2013-07-15T17:08:36.200 回答
17

xor 的意思是“异或”。也就是说,它是或,但如果操作的两个参数都为真,则答案为假。

A xor B == (A or B) && !(A and B)
于 2013-07-15T17:12:13.920 回答
11

不同之处在于输入偶数个 1(或真):

true or  true = true
true xor true = false

true or  true or  true = true
true xor true xor true = true

true or  false or  true = true
true xor false xor true = false

OR的真值表:

  in1  |  in2  | out
-------|-------|-----
   0   |   0   |  0
   0   |   1   |  1
   1   |   0   |  1
   1   |   1   |  1

异或真值表:

  in1  |  in2  | out
-------|-------|-----
   0   |   0   |  0
   0   |   1   |  1
   1   |   0   |  1
   1   |   1   |  0
于 2013-07-15T17:09:12.767 回答
5

另一种说法:OR可以看作是AND/OR连接器。一个或两个选择可以是正确的或选择的。另一方面,XOR 可以被描述为“真正的”OR。两种选择中只有一种可以为真(或被选择)。

于 2015-06-23T13:29:38.097 回答
2

一个是异或 -> xor,另一个是 or 这意味着在真值表中至少满足一个条件。or 不是互斥的,xor 是。

于 2013-07-15T17:14:13.320 回答
0

在此处输入图像描述 在此处输入图像描述

xor 是排他的。或者是包容性的

于 2019-10-03T16:42:31.470 回答