如何将布尔表达式从AND和OR转换为仅NAND



我有一项任务让我抓狂因为我不知道从哪里开始。

任务如下:转换给定的布尔表达式,使其只包含NAND运算,不包含负数。

c * b * a + /c * b * /a

我认为这是可能的,:D但我不知道该怎么做,只花了几个小时在原地打转。

有人能告诉我正确的方向吗?

谨致问候,
askin

更新:

多亏了这些答案,我想我找到了解决方案:

c*b*a = /(/(c*b*a)*/(c*b*a)) = A; 
/c*b*/a = /(/(/(a*a)*b*/(c*c))*/(/(a*a)*b*/(c*c))) = B; 
c*b*a+/c*b*/a = A + B = /(/(A*A)*/(B*B))

本文详细介绍了如何通过NAND构建其他逻辑门。应该是一个简单的应用程序:

http://en.wikipedia.org/wiki/NAND_logic

例如,C=A AND B相当于

C = NOT (A NAND B)  
or
C' = (A NAND B)
C = C' NAND C'   (effectively NOT'ing A NAND B)

要深入讨论如何用一种函数/逻辑门构建布尔表达式(在这种情况下,NOR,但将其更改为NAND很简单),请查看

实用主义程序员杂志2012-03:NOR机器

c * b * a + /c * b * /a

仅NAND

/( /(c * b * a)  *  /( /(c * c) * b * /(a * a) ) )
NAND( NAND(c,b,a) , NAND( NAND(c,c), b, NAND (a, a)))

所以你需要两个3门NAND,三个2门NAND。

NOT(A)=NAND(A,A)

A或B=NAND(NAND(A,A),NAND(B,B))

相关内容

最新更新