三个值的异或运算

XOR operation on three values

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

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

这是我想要的操作的真相 table(具有三个参数的异或)。

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

使用这个

(A xor B) or (B xor C)

也适用于 n 输入。

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

要为此制定算法,您需要知道如何在三变量中使用卡诺图。查看示例卡诺图 here

好的。首先,为了让事情更简单,将 T 替换为 1 并将 F 替换为 0 实际上 table.

乍看就是一个递增的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

通过使用卡诺图,您将得到下面的布尔表达式。 对于第一个表达式,我们得到 A'B .

对于第二个表达式AB' .

对于第三个表达式 B'C

对于第四个表达式BC' .

简单理解卡诺图,如果所有1的都在一个变量的table的直视范围内,那么一个表达式将只包含该变量.但是如果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)

听说是我的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))