我一直在尝试简化
布尔表达式: A ^ B * C
已有一段时间了。我能够首先将其简化为:A * ~B + ~A * B * C
,但在那之后,我似乎无法进一步简化它。使用在线简化表示它简化为(A + B) * (A + C) * (~A + ~B)
,但是为什么呢?以及用什么法律将其简化呢?
答案 0 :(得分:0)
这取决于运算符的优先级。通常,AND在XOR之前,并且为A XOR (B AND C)
。某些编程语言在不使用括号的情况下严格从左到右评估表达式,导致(A XOR B) AND C
,假设您对^
使用XOR
,对*
使用AND
您的简化似乎适用于后一种变体,但通常在布尔代数中,您首先要评估AND:
A * ~(B*C) + ~A * B * C
= A * (~B + ~C) + ~A * B * C
= A * ~B + A * ~C + ~A * B * C
使用这种布尔表达式已经有一段时间了,所以我不知道是否可以进行进一步的简化(或者即使我是正确的)。
您确定您正确记下了在线简化程序的结果吗?因为术语(A + B) * (~A * ~B)
的值为A * ~A * ~B + B * ~A * ~B = 0 + 0
,因此整个术语的值为false
。所有这些都假定运算符具有以下优先级:NOT> AND> OR。如果他们的解决方案中的最后一项是(~A + ~B)
,那么它会更有意义并评估为您的术语A * ~B + ~A * B * C
,这就是它的合取范式。