对三个值进行XOR运算

问题描述 投票:2回答:2

我有三个布尔值。如果三个都是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
boolean logical-operators boolean-logic xor
2个回答
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)

1
投票

用这个

(A x或B)或(B x或C)

适用于n输入。

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

© www.soinside.com 2019 - 2024. All rights reserved.