我一直在尝试简化布尔表达式:A ^ B * C
一段时间了。我可以先将其简化为:A * ~B + ~A * B * C
但在那之后我似乎无法进一步简化它。使用在线简化,它说它简化为(A + B) * (A + C) * (~A + ~B)
但为什么呢?用什么法律来简化它?
这取决于运算符的优先级。通常 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
,它只是它的合取范式。