如图,我们有一个真值表,我们不考虑其功能,也不引入'最小项'等任何定义,本文仅从最直观的角度来解释一下如何通过一个真值表来写出其逻辑函数。
在此之前,你需要知道与和或是如何进行运算即可。
我们将A、B、C称为逻辑函数的输入,Y称为该逻辑函数的输出。三变量的逻辑函数共有八组输入,每一组输入的结果可能使得输出为0或者1。
真值表就为我们很直观的展示了每一组输入对应的输出情况:如当ABC输入同时为000时输出1,当ABC输入001时同时为Y为0等。
在没有约束项的真值表(逻辑函数)中,每一种输入情况都可能出现。
意思是在没有特定说明下,ABC的输入可以为000,001,010,011,100,101,110,111中的任意一组。即输入可以为真值表中的任何一组输入。
假设在有一个N组取值的真值表(我们的真值表有8组取值),某一时刻,电路或是逻辑表达式只能有一组特定输入,又因为我们的输入有N种情况,那么为了写出逻辑函数的表达式,我们的表达式中将会有N项,每一项正好代表着一种输入情况出现与否,当某一种输入情况出现时,那么我们代表着这组输入的项就是真,即1,其他项为0。
在上面真值表的例子中,输入取值可能出现八种情况,所以我们要用八项来分别表示每一种输入情况是否出现。这些项的含义就是当一种输入情况出现时,我们代表着这种输入情况的项取值就为真。
我们可以用暂时代表当输入为000,001,010,011……111时表达式中的项,这些符号仅仅是代表了我们的每一项,如何计算项是什么,下面再详述,这里仅是简单的代替。
根据上面所述构成项的规则——每一项代表着一种输入是否出现,所以我们可以通过查看真值表知道:当输入为000时,因为代表了输入为000的出现,所以为真,为1,其他项均为0;
同样的道理,由于代表了输入001的出现与否,所以当输入为001时,即001这种输入情况出现了,此时就为真,即1。其他项各自代表了自己的输入情况,而同一时刻下只能出现一种输入,又因为现在的输入为001,所以其他项皆为0。
通过上面的解释,我们已经知道当一种输入情况产生时,与之对应的项是真,也就是1,而其他每一项都为0,而真值表中又明确的告诉我们:每一组输入取值所对应的输出是什么。
那么我们让每一种输出取值和对应的输入的项去做与运算,这样,当有某一种输入出现时,因为代表着该输入的项为1,所以这一项的输出会保持原样(),而其他的项都为0,所以其他的输出也是无效的()。
不要忘记我们的项就是代表着某种输入情况是否发生,如果这种输入情况发生,则代表该输入的项就是真,即1。
在任何一时刻一个逻辑函数只会有一组特定的输入,所以在任何一时刻也只会有一个项为真,即代表着当前时刻输入的项为真。表达式中的每一项都会和该项代表的输入所对应的输出相与,所以最终有效的是输出就是那个为真的项代表的输入所对应的输出。
这样,我们把项的构成规则再添加一点东西,让每一项和这一项项代表的那组输入相与,现在每一项就成了: 该项的出现情况 \cdot 该项代表的输入的输出结果
通过我们的真值表写出表达式中的每一项:
现在用语言来描述一下我们构造的表达式的输入输出情况:
当输入为000时,因为代表了输入000的情况出现,所以有:
我们又让每一项和其代表的输入情况对应输出做了与运算,即,所以此时根据我们的表达式的逻辑,有所代表的的输入(000)的输出是有效的,这也正好顺应了真值表的逻辑,一组输入对应了特定的一种输出。
在我们构造的表达式中,没有出现的输入其对应的项结果就是0,所以为了让这些为0的项不影响到真正出现的输入所对应的项,我们就需要让这些项全部相或()。
现在我们写出这个真值表的逻辑表达式:
我们可以看到,真值表中输出为0的输入所对应的项,都会与一个0,所以无论如何这个项的最终结果肯定是0(),我们就可以直接忽略掉这些项,只写出使得输出为1 的输入 所对应的项即可。
因为,所以我们也可以将1忽略掉。
有我们最终的逻辑函数的表达式为,其中代表了输入是否为000,代表了输入是否为101,代表了输入是否为111,如果输入是这三种的任何一个,那么对应的这一项就为真;又因为这三项代表的输入所对应的输出是1,所以当项为真时,那么我们的逻辑表达式就为真。