我正在努力思考如何做到这一点。据我了解,如果可以使用逻辑门的某种组合来执行每个基本逻辑运算“与”、“或”和“非”,则一组逻辑门被称为“功能完整”。声称 NAND 门功能完整。
我不明白的是如何构建一个或门作为与非门。从与非门等构建与门。我想出的公式必须具有相同的输出吗?
X' = X NAND 1
X + Y = ?
X * Y = ?
通过真值表,X' = X NAND 1 是怎样的?我不确定 X NAND 1 是什么意思。 1是固定为y吗?当我看到 x NAND y 等 2 个输入之间的门时,我感到很困惑。如何构建 x+y = NAND 的真值表?或者我应该采取不同的方式?
按照定义即可:
X 与 Y = ~ (X AND Y) = ~X 或 ~Y
代入 Y = 1,你会得到
X 与非 1 = ~X 或 ~1 = ~X 或 0 = ~X = X'
编辑:
为了让您了解如何使用 NAND 门构建其他门,这篇维基百科文章非常好且内容丰富。希望有帮助。
是的,
X NAND 1
就像X NAND Y
一样,其中Y
固定为1。与X进行比较的东西不必称为Y;它可以是任何变量、任何常量或另一个比较的结果。重要的是该值最终是 0 还是 1。
示例:
X |是 | 1 | X 或 Y ---+---+---+-------- 0 | 0 | 1 | 0 0 | 1 | 1 | 1 1 | 0 | 1 | 1 1 | 1 | 1 | 1
现在您只需将第一列中的数字分别与第二列、第三列或第四列中的数字进行比较即可执行
X AND Y
、X AND 1
或 X AND (X OR Y)
。
具体而言,
NAND
,请记住它的含义与AND
相反。它实际上代表“不和”。因此,如果您将两个东西 AND
加在一起并得到 0,那么将相同的两个东西 NAND
加在一起就会得到 1。
也就是说,你的最后一个问题没有多大意义。没有
X+Y = NAND
这样的东西。 X
、Y
和 X+Y
是值; NAND
是一个门。你不能将数字与门进行比较。你的问题是要求你使用 NAND
门一遍又一遍地比较事物,直到你得到一列看起来与 X+Y
相同的零和一列。
编辑:
好的,让我们看看你的问题“使用真值表 X' = X NAND 1 怎么样?”
X | X' | 1 | X 与 1 | X NAND 1 与 X AND 1 的相反相同 ---+----+---+------------------------+------------------------ -------------------------- 0 | 1 | 1 | 0 和 1 = 0 | 1(0 的相反) 0 | 1 | 1 | 0 和 1 = 0 | 1(0 的相反) 1 | 0 | 1 | 1 和 1 = 1 | 0(1 的相反) 1 | 0 | 1 | 1 和 1 = 1 | 0(1 的相反)
查看每一列,我们可以看到
X'
与 X NAND 1
具有相同的值
NAND 基本上与 AND 相反:
真值表
A B A NAND B A AND B A OR B A NOR B
0 0 1 0 o 1
0 1 1 0 1 0
1 0 1 0 1 0
1 1 0 1 1 0
通过使用这些和其余布尔运算符进行正确的组合,您应该能够根据其他运算符构造任何一个
快速真值表:
NAND 1 0
0 1 1
1 0 1
OR 1 0
0 1 0
1 1 1
NOT
1 0
0 1
功能完整意味着,给定一堆完整的门,您可以构造任何其他门类型。
因此,如果您构建一个具有 1 个与非门的电路,您将得到与或门完全相反的结果(输入相反)。如果您的目标是构建“或”门,则必须反转“与非”门的输入。这很容易用几个 NOT 门来实现(如果仔细观察,这与 NAND 门相同,其输入之一与逻辑 1 相关)。因此,您将这些“非”门放在“与非”门之前,瞧,“或”门就会脱落。
为了让您感到困惑,将门放在两个输入之间只是将该门用作二元运算符,例如 + 号。这与 NAND(X, 1) 或“与非门的输入为 X 和 1 时的输出”相同。