我的问题与运营商有关。今天我研究了运营商。有一种困惑。在 PHP 中,“or”和“xor”有什么区别。我知道它们都与布尔表达式有关。但是找不到原来的区别。
请任何人帮助更清楚地理解它。
我的问题与运营商有关。今天我研究了运营商。有一种困惑。在 PHP 中,“or”和“xor”有什么区别。我知道它们都与布尔表达式有关。但是找不到原来的区别。
请任何人帮助更清楚地理解它。
它与互斥有关。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
$y
or
xor 的意思是“异或”。也就是说,它是或,但如果操作的两个参数都为真,则答案为假。
A xor B == (A or B) && !(A and B)
不同之处在于输入偶数个 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
另一种说法:OR可以看作是AND/OR连接器。一个或两个选择可以是正确的或选择的。另一方面,XOR 可以被描述为“真正的”OR。两种选择中只有一种可以为真(或被选择)。
一个是异或 -> xor,另一个是 or 这意味着在真值表中至少满足一个条件。or 不是互斥的,xor 是。