我有以下表达式('
表示NOT
)...
e'(a+b)
首先我扩展......
e'a + e'b
德摩根定律......
(e'a +e'b)'
((e'a)'(e'b)')'
现在我被卡住了。我使用的每个NAND
门只能接受最多2个输入。我可以根据需要使用尽可能多的NAND
个门,但我应该尝试使用最少量的门来表达。
我是否在正确的轨道上?我该如何继续?
答案 0 :(得分:0)
这看起来不是正确的轨道。
您的原始表达式只有三个操作:NOT(e'
),OR(a+b
)和AND(在我给出的最后两个表达式之间)。您应该弄清楚如何执行这三个操作中的每个操作,然后将它们组合成一个整体结构。知道如何做这些事情对于这类问题至关重要。
以下是第一步:NOT x
相当于x NAND x
,因此e'
相当于e NAND e
。从这里继续。
答案 1 :(得分:0)
首先,我建议采取这个:
e'(a+b)
使用更详细的表示法编写它,使转换更容易识别为正确完成:
(not e) and (a or b)
正如Rory Daulton所说,第一步是知道如何使用nand渲染基本的逻辑运算。
回到我们的表达:
(not e) and (a or b)
我有点像在外面工作,所以我们从最外面的操作开始,然后使用上面2中的规则得到:
(not e) and (a or b)
2=> ((not e) nand (a or b)) nand ((not e) nand (a or b))
既然我们在同一级别有四个子表达式,我们可以从左边开始,按照我们的方式行事:
(not e) and (a or b)
2=> ((not e) nand (a or b)) nand ((not e) nand (a or b))
1=> ((e nand e) nand (a or b)) nand ((not e) nand (a or b))
3=> ((e nand e) nand ((a nand a) nand (b nand b))) nand ((not e) nand (a or b))
1=> ((e nand e) nand ((a nand a) nand (b nand b))) nand ((e nand e) nand (a or b))
3=> ((e nand e) nand ((a nand a) nand (b nand b))) nand ((e nand e) nand ((a nand a) nand (b nand b)))
这样的电路可能如下:
e--+---|\ e'
| > >o----------------------|\ (e'(a+b))'
+---|/ > >o--------+---|\
+---|/ | > >o--e'(a+b)
a--+---|\ a' | +---|/
| > >o--------|\ |
+---|/ > >o------+
+---|/ a+b
b--+---|\ |
| > >o----+
+---|/ b'