有效 BCD 数字:从真值表到布尔表达式
有效 BCD 数字 的真值表,以及它定义的公式:标准 DNF、标准 CNF 和最简形式。
| 行 | p | q | r | s | 输出 |
|---|---|---|---|---|---|
| 1 | ⊥ | ⊥ | ⊥ | ⊥ | ⊤ |
| 2 | ⊤ | ⊥ | ⊥ | ⊥ | ⊤ |
| 3 | ⊥ | ⊤ | ⊥ | ⊥ | ⊤ |
| 4 | ⊤ | ⊤ | ⊥ | ⊥ | ⊥ |
| 5 | ⊥ | ⊥ | ⊤ | ⊥ | ⊤ |
| 6 | ⊤ | ⊥ | ⊤ | ⊥ | ⊥ |
| 7 | ⊥ | ⊤ | ⊤ | ⊥ | ⊤ |
| 8 | ⊤ | ⊤ | ⊤ | ⊥ | ⊥ |
| 9 | ⊥ | ⊥ | ⊥ | ⊤ | ⊤ |
| 10 | ⊤ | ⊥ | ⊥ | ⊤ | ⊤ |
| 11 | ⊥ | ⊤ | ⊥ | ⊤ | ⊤ |
| 12 | ⊤ | ⊤ | ⊥ | ⊤ | ⊥ |
| 13 | ⊥ | ⊥ | ⊤ | ⊤ | ⊤ |
| 14 | ⊤ | ⊥ | ⊤ | ⊤ | ⊥ |
| 15 | ⊥ | ⊤ | ⊤ | ⊤ | ⊤ |
| 16 | ⊤ | ⊤ | ⊤ | ⊤ | ⊥ |
这些形式是如何从表中读出的
- 16 行中有 10 行输出为 ⊤:1, 2, 3, 5, 7, 9, 10, 11, 13, 15。每一行为 DNF 贡献一个最小项。
- 16 行中有 6 行输出为 ⊥:4, 6, 8, 12, 14, 16。每一行为 CNF 贡献一个最大项。
析取范式(积之和)
(¬p ∧ ¬q ∧ ¬r ∧ ¬s) ∨ (p ∧ ¬q ∧ ¬r ∧ ¬s) ∨ (¬p ∧ q ∧ ¬r ∧ ¬s) ∨ (¬p ∧ ¬q ∧ r ∧ ¬s) ∨ (¬p ∧ q ∧ r ∧ ¬s) ∨ (¬p ∧ ¬q ∧ ¬r ∧ s) ∨ (p ∧ ¬q ∧ ¬r ∧ s) ∨ (¬p ∧ q ∧ ¬r ∧ s) ∨ (¬p ∧ ¬q ∧ r ∧ s) ∨ (¬p ∧ q ∧ r ∧ s)
合取范式(和之积)
(¬p ∨ ¬q ∨ r ∨ s) ∧ (¬p ∨ q ∨ ¬r ∨ s) ∧ (¬p ∨ ¬q ∨ ¬r ∨ s) ∧ (¬p ∨ ¬q ∨ r ∨ ¬s) ∧ (¬p ∨ q ∨ ¬r ∨ ¬s) ∧ (¬p ∨ ¬q ∨ ¬r ∨ ¬s)
最简形式 - 积之和
¬p ∨ (¬q ∧ ¬r)
最简形式 - 和之积
(¬p ∨ ¬r) ∧ (¬p ∨ ¬q)
常见问题
关于逻辑计算器使用方式的常见问题解答
“从真值表到表达式”这个工具是做什么的?
它让计算器反过来运行。你逐行点击来设定真值表的输出列,它就生成一个真值表恰好如此的公式,形式可以是析取范式(若干合取式的析取)或合取范式(若干析取式的合取)。
析取范式和合取范式有什么区别?
析取范式是积之和:输出为真的每一行对应一个合取式,全部用“或”连接。合取范式是和之积:输出为假的每一行对应一个析取式,全部用“与”连接。两者描述同一个函数,所以哪个对你的表格更短就用哪个——输出大多为假时析取范式较短,大多为真时合取范式较短。
合成工具最多支持几个变量?
最多五个,也就是 32 行的表格。每加一个变量行数就翻倍,超过五个之后,这张表就不再是能靠手工设定的东西了。
为什么生成的表达式这么长?
范式是一行一行搭起来的:每需要覆盖一行,就有一个包含全部变量的项。所以它的长度跟着真值表走,而不是跟着公式背后的想法走。它按构造保证正确,但不保证简洁。想缩短的话,把它放到计算器里打开,那里会列出等价形式,包括一个最小化的析取范式。
能得到一个公式的简化版本吗?
可以。把它输入计算器,看真值表下方的等价形式。其中既有依代数定律改写得到的形式,也有从真值表读出的析取范式和合取范式,以及一个最小化的析取范式。