真值为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
(或 <=>
)运算符执行相同的操作,除非是其中一个操作数自行决定结果的微不足道的情况。
有没有办法找到逻辑门或如何根据想要的真相制作更复杂的门/位运算符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
(或 <=>
)运算符执行相同的操作,除非是其中一个操作数自行决定结果的微不足道的情况。