《计算机组成与体系结构(原书第4版)》 —3.2.5 表示布尔函数
3.2.5 表示布尔函数
在前面已经看到,可以有许多不同的方式来表示给定的布尔函数。例如,可以用一个真值表,或者使用许多不同类型的布尔表达式。事实上,有无限多个布尔表达式在逻辑上等同。可以由同一个真值表来表示的两个表达式被认为逻辑上是等同的(见例3.8)。
例3.8假设F(x,y,z)=x+xy′。可以表示F为F(x,y,z)=x+x+xy′,因为按照幂等律这两个表达式是一样的。也可以用分配律表示F为F(x,y,z)=x(1+y′)。
为了消除潜在的混乱,数字逻辑设计师指定布尔函数应使用规范或标准化的格式。对于任何给定的布尔函数,存在唯一的标准格式。不过,设计者也使用不同的“标准”。两种最常见的是和的乘积和乘积的和这两种形式。
乘积的和形式要求表达式是一些项与变量(或乘积项)的集合,然后进行求和运算。函数F1(x,y,z)=xy+yz′+xyz就是乘积的和的形式。函数F2(x,y,z)=xy′+x(y+z′)不是乘积的和的形式。在F2函数中对于x应用分配律使其变成表达式xy′+xy+xz′,这是乘积的和形式。
和的乘积表示的布尔表达式是或运算变量(求和项),然后进行与运算。函数F1(x,y,z)=(x+y)(x+z′)(y+z′)(y+z)为和的乘积形式,在很多情况下,当判断布尔表达式为真而不是假时,首选和的乘积形式。这是与函数F1不一样的情况,乘积的和的形式适合这种情况。而且乘积的和的形式通常比较容易使用,因此,在后面的章节只使用这种形式。
任何布尔表达式都可以用乘积的和形式来表示。因为任何布尔表达式都可以表示为一个真值表,结论是任何真值表也可以表示为乘积的和形式。从例3.9中可以看到将真值表转换成乘积的和形式是很简单的。
例3.9考虑一个简单的择多函数。
对于这个函数来说,当给出3个输入时,如果输入为1的变量不到一半时,输出为0;如果输入变量至少有一半为1时,输出为1。表3-8描述了这个具有3个变量的择多函数的真值表。
下面将乘积和的形式转换为真值表,并通过结果来分析问题。如果希望表达式x+y等于1,则x或y(或两者)等于1。如果xy+yz=1,则xy=1或yz=1或两者均等于1。
反向使用这个逻辑,并把它应用到择多函数,可以看到当x=0、y=1、z=1时该函数必须输出1,满足这个条件的乘积项是x′yz(显然,此项等于1时,因为x=0、y=1、z=1)。当x=1、y=0、z=1时,输出值为1第二次出现,满足这个条件的乘积项是xy′z。需要的第三个乘积项是xyz′,最后是xyz。总之,要使用真值表产生一个乘积和的形式的布尔表达式,必须生成对应于各行的输入变量的乘积项,其中每一行输出变量的值是1。在每一个乘积项中,我们必须对那一行中每一个为0的变量进行求反。
择多函数可以表达为乘积和的形式,如F(x,y,z)=x′yz+xy′z+xyz′+xyz。
请注意,对于例3.9所示的择多函数的表达式可能不是最简单的形式,而只是一个标准形式。该乘积的和形式以及和的乘积的形式是等价的布尔函数表示方式。通过布尔定律,一种形式可以转换为另一种形式。无论使用乘积的和形式或和的乘积形式,表达式最终必须转化成最简形式,这意味着使表达式的项减少到了最小。为什么一定要简化表达式?在表达式中不必要的项会在物理电路中产生不需要的组件,这会产生一个次优电路。我们将在下一节讲述布尔表达式与对应电路。
- 点赞
- 收藏
- 关注作者
评论(0)