布尔函数简化器?

时间:2016-05-02 21:01:14

标签: boolean-logic

x = (a & b & d) | ~(a | ~b | c) | (~c & ~d & a) | (c & d)

~ = not
& = and
| = or

如何简化这样的功能,我该怎么办? 我尝试了一些简化的程序,但我不理解它们。

2 个答案:

答案 0 :(得分:1)

您应该为所涉及的变量和最终输出写出真值表。

然后,对于事实表中的每一行都是真的,你可以根据变量的状态写一个逻辑方程来重现那个逻辑“一”,通常是一个适当输入的AND函数和反函数投入。

假设只有3行具有true或逻辑1输出。 这意味着你有三个逻辑方程式。 你可以通过将这三个方程与OR运算符连接起来完成这项工作。

通过查看真值表,您可能会注意到逻辑真行的输出不依赖于所有变量。这是简化表达的一种方法。

答案 1 :(得分:-1)

另一种简化方法是将方程视为带乘法和加法的代数问题,在此使用分配定律。我将对“或”功能使用“ +”号,以便于查看连接。

例如,您的第一个和最后一个词可以写成:

a&b&d + c&d

您可以将其写为(a&b + c)&d

有时会有所帮助

假设您有术语E和F,它们应“在一起”而不是“或”在一起。

E =(〜a | b |〜c)

F =〜c&〜d&a

您将写E&F =

(〜a + b +〜c)&(〜c&〜d&a)

然后可以将其扩展为:

=〜a&(〜c&〜d&a)+ b&(〜c&〜d&a)+〜c&(〜c&〜d&a)

因为〜a&a始终为0,〜c&〜c始终为1

E&F = b&〜c&〜d&a +〜d&a

  = a & b & ~c & ~d + a & ~d

但可以进一步简化

E&F =(a&〜d)&(b&〜c + 1),但是b&〜c + 1总是= 1,所以

E&F = a&〜d

这项技术在简化类似于您上面给出的逻辑方程式时很有用。

请记住〜(a + b)=〜a&〜b,我忘记了,因此不得不使用与上面发布的示例稍有不同的示例