在布尔代数中,我们常常需要通过一个公式来表示一个逻辑电路的输出和输入间的关系。这个公式一般是由一些运算符和变量组成的,这些运算符包括非(NOT)、与(AND)、或(OR)等。这样的公式被称为布尔表达式。
在本文中,我们将介绍一种用真值表求主范式的方法。主范式通常用于化简布尔表达式,它是一个由所有输出为“1”时对应的输入项取反后的积(Boolean sum)和式(Boolean product)组成的表达式。
首先,让我们来看看什么是真值表。真值表是一种用来表示一个布尔表达式的完整输出和变量组合的表格形式。表格中的每一行代表一个输入状态,每一列代表输入变量或输出结果。每个单元格包含对应输入状态下的布尔表达式的输出结果。例如,以下是一个由两个变量 $x$ 和 $y$ 构成的真值表:
|x|y|f(x,y)|
|-|-|------|
|0|0| 1 |
|0|1| 0 |
|1|0| 0 |
|1|1| 1 |
其中,上方的第一行和第二行代表输入变量 $x$ 和 $y$ 取值为 $0$ 和 $1$ 时的状态,最右边的一列代表布尔表达式 $f(x,y)$ 对应的输出。
现在,我们来看如何通过真值表求主范式。假设我们有一个由两个变量 $x$ 和 $y$ 构成的布尔表达式,符合以下真值表:
|x|y|f(x,y)|
|-|-|------|
|0|0| 0 |
|0|1| 1 |
|1|0| 1 |
|1|1| 0 |
步骤如下:
第一步,标记所有真值表输出为 "1" 的行。
|x|y|f(x,y)|
|-|-|------|
|0|0| 0 |
|0|1| 1 ✔ |
|1|0| 1 ✔ |
|1|1| 0 |
第二步,对于每个被标记的行,找到它所对应的输入变量。将每行输入变量取反,并用乘积符号相连。例如,在上面的真值表中,我们找到两个被标记的行,对应的输入变量为 $x$ 和 $\lnot y$。所以我们可以得到以下主范式:
$$f(x,y)=(x\land \lnot y)$$
因为只有两个输入变量 $x$ 和 $y$,所以上面的主范式只包括了一个取反后的积(Boolean sum)项。在具有更多变量的情况下,我们可能需要更多的项构成主范式。
总之,用真值表求主范式的步骤如上,这是一个比较简单的方法。但是,它只适用于比较小的布尔表达式。在实际应用中,我们通常使用卡诺图(Karnaugh map)和显然积(Boolean sum-of-products)等更高级的算法来化简布尔表达式。
扫码咨询 领取资料