构建一个电路来测试两个输入是否相等
Build a circuit to test if two inputs are equal
所以我在做一道题,内容如下
Build a circuit using the abstract syntax for Prop to test if two inputs are equal. Justify that your circuit is correct.
这是有问题的Prop
。
data Prop = FALSE | TRUE | IN String | NOT Prop | OR Prop Prop | AND Prop Prop
本能地,我很想写 AND(IN "A")(IN "B")
并给出一个真理 table 来证明它,但这似乎很简单。我错过了什么吗?
编辑:糟糕,我最终制作了一个解决问题的异或门。我把 AND 误认为是 XNOR,这是造成混乱的根本原因。答案区的解决方案比我的更优雅,请参考。
两个输入在两种情况下相等:要么都为真,要么都为假。似乎给定的语言允许对其进行编码:您可以通过引用它来检查输入是否为真,即 IN "A"
,并且您可以通过取反来检查输入是否为假,即 NOT (IN "A")
.然后将这些检查与 AND
s 和 OR
结合起来,你就完成了:
OR
(AND -- Both "A" and "B" are true
(IN "A") -- "A" is true
(IN "B") -- "B" is true
)
(AND -- Both "A" and "B" are false
(NOT (IN "A")) -- "A" is false
(NOT (IN "B")) -- "B" is false
)
.
--------------------------------------------------------------------------
| A | B | NOT A | NOT B | AND A B | AND (NOT A) (NOT B) | Result |
--------------------------------------------------------------------------
| false | false | true | true | false | true | true |
| false | true | true | false | false | false | false |
| true | false | false | true | false | false | false |
| true | true | false | false | true | false | true |
--------------------------------------------------------------------------
所以我在做一道题,内容如下
Build a circuit using the abstract syntax for Prop to test if two inputs are equal. Justify that your circuit is correct.
这是有问题的Prop
。
data Prop = FALSE | TRUE | IN String | NOT Prop | OR Prop Prop | AND Prop Prop
本能地,我很想写 AND(IN "A")(IN "B")
并给出一个真理 table 来证明它,但这似乎很简单。我错过了什么吗?
编辑:糟糕,我最终制作了一个解决问题的异或门。我把 AND 误认为是 XNOR,这是造成混乱的根本原因。答案区的解决方案比我的更优雅,请参考。
两个输入在两种情况下相等:要么都为真,要么都为假。似乎给定的语言允许对其进行编码:您可以通过引用它来检查输入是否为真,即 IN "A"
,并且您可以通过取反来检查输入是否为假,即 NOT (IN "A")
.然后将这些检查与 AND
s 和 OR
结合起来,你就完成了:
OR
(AND -- Both "A" and "B" are true
(IN "A") -- "A" is true
(IN "B") -- "B" is true
)
(AND -- Both "A" and "B" are false
(NOT (IN "A")) -- "A" is false
(NOT (IN "B")) -- "B" is false
)
.
--------------------------------------------------------------------------
| A | B | NOT A | NOT B | AND A B | AND (NOT A) (NOT B) | Result |
--------------------------------------------------------------------------
| false | false | true | true | false | true | true |
| false | true | true | false | false | false | false |
| true | false | false | true | false | false | false |
| true | true | false | false | true | false | true |
--------------------------------------------------------------------------