从多位输入真值表推导布尔表达式的技术求助
两位输入真值表的布尔表达式推导方案
先把你给出的真值表转换成更便于分析的格式,同时将两位输入拆分为单独的二进制变量:把输入a拆为高位a₁、低位a₀,输入b拆为高位b₁、低位b₀,输出r拆为高位r₁、低位r₀,拆分后的真值表如下:
| a(a₁a₀) | b(b₁b₀) | r(r₁r₀) | r₁ | r₀ |
|---|---|---|---|---|
| 00 | 00 | 00 | 0 | 0 |
| 00 | 01 | 01 | 0 | 1 |
| 00 | 11 | 01 | 0 | 1 |
| 01 | 00 | 01 | 0 | 1 |
| 01 | 01 | 01 | 0 | 1 |
| 01 | 11 | 01 | 0 | 1 |
| 11 | 00 | 01 | 0 | 1 |
| 11 | 01 | 01 | 0 | 1 |
| 11 | 11 | 11 | 1 | 1 |
一、推导r₁的布尔表达式
观察真值表可知,r₁仅在a=11且b=11时为1,其余所有情况均为0。结合你提到的“输入第一位置位时第二位可灵活处理”,如果a₁=1或b₁=1时的未定义情况(比如a=10、b=10)可视为无关项(标记为x),但从现有真值表来看,这些无关项无法帮助合并简化r₁的表达式,因此r₁的最简表达式为:
r₁ = a₁ · a₀ · b₁ · b₀
用两位输入的形式表示就是:r₁ = (a == 11) ∧ (b == 11)
二、推导r₀的布尔表达式
r₀仅在a=00且b=00时为0,其余所有情况均为1。用4变量卡诺图分析(将未出现的输入组合视为无关项),可以直接合并所有为1的区域,得到最简表达式:
r₀ = a₁ + a₀ + b₁ + b₀
或者用逻辑非表示:
r₀ = ¬(¬a₁ · ¬a₀ · ¬b₁ · ¬b₀)
验证一下:只要a或b的任意一位为1,r₀就为1,完全匹配真值表的所有情况。
三、多位输入的卡诺图处理技巧
所谓“多位输入”本质上就是多个单二进制变量的组合,不需要找特殊工具。只要把每个多位输入拆成单独的位变量,比如两位输入拆成2个单变量,就可以用对应变量数的常规卡诺图分析。
另外你提到的“输入第一位置位时第二位可灵活处理”,直接把这些灵活的位标记为卡诺图中的**无关项(Don't Care)**即可,合并时可以根据需要将无关项当作1或0,来帮助简化表达式,只要不违背已给定的真值表结果就行。
内容的提问来源于stack exchange,提问作者e2r3p13
相关产品推荐
相关产品推荐

