你应该为所涉及的变量和最终输出写出一个真值表。
然后,对于真值表中被证明为真的每一行,您根据变量的状态编写一个逻辑方程来重现该逻辑“一”,通常是适当输入和逆的 AND 函数输入。
假设只有 3 行具有真或逻辑 1 输出。
这意味着您将拥有三个逻辑方程式。
您可以通过使用 OR 运算符将这三个方程连接在一起来完成这项工作。
通过查看真值表,您可能会注意到逻辑真线的输出并不依赖于所有变量。这是简化表达式的一种方式。
求解一个类似于你上面提到的方程
(a & b & d) | (~a | b | ~c) | (~c & ~d & a) | (c & d)
我得到以下结果
x = 1 除了一种情况,即 (a b c d) = (1 0 1 0),在这种情况下它为零。
因此 x = ~( a & ~b & c & ~d) 或 x = ~a |乙 | 〜c | d
如何做到这一点?
为了更容易做到这一点,您可以将方程式重写为
x = A | B | C | D, where
A = (a & b & d)
B = (~a | b | ~c)
C = ~c & ~d & a
D = c & d
变量 B = 1 对于 (abcd) 的两组输入(即 (1010) 和 (1011) 除外)。
变量 A = 1 仅适用于 B 已经涵盖的两个输入集。
与变量 C 类似。
对于两组输入 B 中的一组输入,变量 D = 1 没有使 = 1,即 (1011)。
因此 x = 0 仅当输入恰好为 a=1、b=0、c=1、d=0 时,但我们希望将其写为当这些输入给定时为真 (=1) 的方程,所以我们写
x = ~(a & ~b & c & ~d) or x = ~a | b | ~c | d
所以这是一种简化的方法。我将在单独的答案中添加第二种技术。
很抱歉花了这么长时间才把它拼出来,但也许其他人会觉得它有用。
OP 的原始方程已被相当简化。真值表具有几乎相等的 T 和 F 条目,因此不适合演示该技术。可以将其重写为
x = (a & b & d) | (~a & b & ~c) | (a & ~c & ~d) | (c & d)
它相当紧凑,但结合第一个和最后一个术语以及中间两个术语可能会略有不同:
x = ((a & b | c) & d) | ((~a & b | a & ~d) & ~c)
请参阅下面的第二个建议答案以获得进一步的解释