12.2 布尔函数的表示

12.2 布尔函数的表示

极小项

这个不用管那么多,其实就是所有变元做布尔积。比如3个布尔元x,y,z:

xyzxyz
0000
0010
0100
0110
1000
1010
1100
1111

可以看到这种情况下,只有所有变元都是1,最终结果才为1,其他情况下都是0。

构建布尔函数

在之前都是如果知道布尔函数,可以通过定理来化简布尔函数,但是如果只知道真值表,如何构建布尔函数呢?

比如下面的真值表:

xyzF
1110
1100
1011
1000
0110
0100
0010
0000

如何构建这个真值表的布尔函数呢?

这里就可以用上面的极小项来实现了,因为我们看到结果中只有一个值为1,其他情况下都是0。所以我们可以得出式子为:
F ( x , y , z ) = x y ‾ z , 这 里 为 什 么 是 y ‾ 呢 ? 因 为 当 时 其 值 为 0 , 所 以 需 要 处 理 一 下 。 F(x,y,z)=x \overline{y} z,这里为什么是 \overline{y} 呢?因为当时其值为0,所以需要处理一下。 F(x,y,z)=xyzy0
上面是有1个1,其他都是0,如果有2个1时:

xyzG
1110
1100
1011
1000
0110
0101
0010
0000

我们就可以表示成2个极小项的和:
G ( x , y , z ) = x y ‾ z + x ‾ y z ‾ G(x,y,z)=x \overline{y}z+ \overline{x}y \overline{z} G(x,y,z)=xyz+xyz
这样我们就可以根据真值表来构建布尔函数了。


这样除了可以用来构建布尔函数,也可以用来化简布尔函数:
F ( x , y , z ) = ( x + y ) z ‾ F(x,y,z)=(x+y) \overline{z} F(x,y,z)=(x+y)z
如果是之前,就需要按照公式一步步拆下去,现在可以首先计算出真值表为:

xyzF
1110
1101
1010
1001
0110
0101
0010
0000

套用上面的公式,我们可以直接得出:
F ( x , y , z ) = x y z ‾ + x y ‾ z ‾ + x ‾ y z ‾ F(x,y,z)=xy \overline{z}+ x\overline{y} \overline{z}+\overline{x}y\overline{z} F(x,y,z)=xyz+xyz+xyz
跟直接套公式得出的结论是一致的。

函数的完备性

上面我们得出,只需要使用+,.,-就可以构建出所有的布尔函数,但是根据下面的公式(德.摩根率):
{ x + y = x ‾ y ‾ ‾ x y = x ‾ + y ‾ ‾ \begin{cases} x+y &=\overline{ \overline{x}\overline{y} } \\ xy &=\overline{ \overline{x}+\overline{y} } \end{cases} {x+yxy=xy=x+y
所以我们只需要+,-或者.,-就可以构建所有的布尔函数了,这就是函数的完备性。

那么可以更小一点吗?也可以,我们定义一个运算符号:|,其真值表如下:

xy|
001
011
101
110

这 样 的 情 况 下 : { x ‾ = x ∣ x x y = ( x ∣ y ) ∣ ( x ∣ y ) 这样的情况下:\\ \begin{cases} \overline{x} &=x|x \\ xy &= (x|y)|(x|y) \end{cases} {xxy=xx=(xy)(xy)

第二个式子可以用真值表来验证:

xyxy(x|y)|(x|y)
0011
0111
1011
1100

|也可以表示为NAND,就是not and,就是在布尔积的基础上取其补值。

类似的还有一个NOR,就是not or,就是在布尔和的基础上取其补值。
表 示 为 ↓ 表示为 \downarrow
真值表为:

xyNOR
001
010
100
110

同时因为:
{ x ‾ = x ↓ x x + y = ( x ↓ y ) ↓ ( x ↓ y ) \begin{cases} \overline{x} &=x \downarrow x \\ x+y &= (x \downarrow y) \downarrow (x \downarrow y) \end{cases} {xx+y=xx=(xy)(xy)
所以可以说NAND和NOR也具有函数完备性。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:C马雯娟 返回首页