真值为1101的逻辑门

Logic gate whose truth is 1101

有没有办法找到逻辑门或如何根据想要的真相制作更复杂的门/位运算符table 我希望有这个道理table :

0 0 = 1

0 1 = 1

1 0 = 0

1 1 = 1

如果您无法从 table 中看到,可以使用一种正式的方法来执行此操作。 为 table 编写 sum of products 表达式。
如果 0 0 = 1,则 A'B' 在表达式中。
如果 0 1 = 1,则 A'B 在表达式中。
如果 1 1 = 1,则 AB 在表达式中。

那么,F = A'B' + A'B + AB
现在,简化表达式:

F = A'B' + A'B + AB
F = A'(B'+B) + AB      Distribution Law
F = A'(1) + AB         Complement Law
F = A' + AB            Identity Law
F = A'(B + 1) + AB     Annulment Law
F = A'B + A' + AB      Distribution Law
F = (A' + A)B + A'     Distribution Law
F = (1)B + A'          Complement Law
F = B + A'             Identity Law

not(A) or B.

你必须使用一个 not 门和一个 or 门。

备选方案

正如评论中指出的那样,您可以从函数的 negated 版本中得出。
如果1 0 = 0,那么F'=AB'
简单地说,F = not(A and not(B))。如果你分配not,那么它将对应与上面相同的布尔表达式。

感谢评论指出更短的方法。

如果你的输入是X1和X2,你想输出一个1,你可以看看这个组合很容易定义:三个只有一个0-然后取反

  • 输出 0 的情况:x1 和(不是 (x2))
  • 反转解(de Mogan): not (x1 and (not (x2) )) = not(x1) or x2

你需要 1 个 not 和 1 个 or 或者你需要 2 x not 和 1 x and

真相table 正好给出了 0 的一种可能性。这与 OR 运算符的模式相同(也是 0 的一种可能性),除了第一个操作数应该被翻转。因此,应取反第一个操作数以获得所需的结果:

NOT(A) OR B

这实际上是 implication operator:当且仅当第一个操作数为真而第二个操作数不为真时,表达式为假:

A => B

如果我们用操作数 00、01、10 和 11 的 4 个结果位来表示一个运算符,则此运算符的代码为 1101(从上到下读取输出列)。对于所有可能的操作,我们有这个:

Output Expression
0000 FALSE
0001 A AND B
0010 A AND NOT(B)
0011 A
0100 NOT(A) AND B
0101 B
0110 A XOR B
0111 A OR B
1000 NOT(A OR B)
1001 A <=> B
1010 NOT B
1011 B => A
1100 NOT A
1101 A => B
1110 NOT(A AND B)
1111 TRUE

有许多替代方法可以编写这些表达式,但作为一个经验法则:如果您需要三个 1-输出,请寻找一个 OR 运算符,其中可能需要翻转一个或两个参数。如果您需要一个 1 输出,请使用 AND 运算符执行相同的操作。如果您有两个 1 输出,请对 XOR(或 <=>)运算符执行相同的操作,除非是其中一个操作数自行决定结果的微不足道的情况。