对三个值进行异或运算

时间:2018-08-31 05:23:38

标签: boolean logical-operators boolean-logic xor

我有三个布尔值。如果三个都是false或三个都是true,我需要返回false。在其他所有情况下,我都会返回true。根据我的研究,在某些规范中,这称为三变量异或。

编辑:一些规范声称三个变量XOR涉及唯一的true结果将来自仅一个参数为true的集合。我在这里指的XOR是另一个规范,其中多个值可能是true,但不是全部。

  • 执行此操作的最快方法是什么? a xor b xor c不起作用

  • 不是三个而是n个参数怎么办?

这是我想要的操作的真值表(带有三个参数的xor)。

A   B   C   -
T   T   T   F
T   T   F   T
T   F   T   T
T   F   F   T
F   T   T   T
F   T   F   T
F   F   T   T
F   F   F   F

3 个答案:

答案 0 :(得分:1)

使用此

  

(A xor B)或(B xor C)

也可用于n输入。

  

(A xor B)或(B xor C)...或(n xor n + 1)

答案 1 :(得分:1)

要为此创建算法,您需要知道如何在三个变量中使用卡诺地图。查看样本卡诺地图here

好的。首先,为方便起见,在真值表中将T替换为 1 ,将F替换为 0

乍看之下,它只是一个递增的3位二进制数。因此,以越来越多的方式安排它是一个好主意。在下面看看。

A   B   C       F(A,B,C)
0   0   0       0
0   0   1       1
0   1   0       1
0   1   1       1
1   0   0       1
1   0   1       1
1   1   0       1
1   1   1       0

通过使用karnaugh-map,您将在下面获得一个布尔表达式。 对于第一个表达式,我们得到 A'B

see image 1

对于第二个表达式 AB'

see image 2

对于第三个表达式 B'C

see image 3

对于第四个表达式 BC'

enter image description here

为了简单地理解卡诺图,如果所有 1 都在变量表的视线之内,则一个表达式项将仅包含该变量。但是,如果 1的不在该变量的视线范围内,那么它就是对该变量的补充。

F(A,B,C) = A'B + AB'+ B'C + BC'

但自

A XOR B = AB'+ A'B
B XOR C = BC'+ B'C

那么我们的简化形式将是

F(A,B,C) = A XOR B + B XOR C

对于伪代码编程,它等效于

result = (A XOR B) OR (B XOR C)
//other else
result = (A ^ B) | (B ^ C)

答案 2 :(得分:0)

听听我对它的 Python 实现

def xor_three(a, b, c):
    return (a ^ b) or (b ^ c)

A = True
B = False
C = True

print(xor_three(A, B, C))