这个实验室有两种模式。一种把简短的布尔表达式变成完整的真值表(truth table)。另一种在二进制(binary)、十进制(denary)和十六进制(hexadecimal)之间转换数值,并显示过程。
先在纸上做题,再用实验室检查每一步。
怎么使用?
- 选择模式:布尔表达式转真值表,或数制转换。
- 布尔模式:用 A 到 D 输入表达式,例如 (A AND B) OR NOT C。按显示过程。
- 数值模式:输入数值,再选择它所用的进制(二进制、十进制或十六进制)。按显示过程。
- 重置会清空实验室。
怎么看结果?
**真值表。**每一种输入组合占一行,所以两个输入有 4 行,三个有 8 行,四个有 16 行。“输出”列显示整个表达式的结果,标题会统计有几行输出为 1。
**转换。**你会看到一行,把这个数写成三种进制,例如 1010(基数 2)= 10(基数 10)= A(基数 16)。下面是方法:二进制转十进制用位值,十进制转二进制或十六进制用连续除法并列出余数,二进制转十六进制则每四位一组。
例子演示
**真值表。**输入 (A AND B) OR NOT C。三个输入共有 8 行。
- 如果 C = 0,则 NOT C 为 1,所以不管 A 和 B 是什么,输出都是 1。这有 4 行。
- 如果 C = 1,NOT C 为 0,输出取决于 A AND B。只有 A = 1 且 B = 1 时才是 1。这有 1 行。
所以 8 行中有 5 行输出为 1,与标题显示的一致。再试不加括号的 A AND B OR NOT C。AND 先于 OR 计算,所以得到同样的表。
试试 NOT A AND B,注意 NOT 只作用于 A。
**转换。**把 10110100 当作二进制输入。值为 1 的位对应的位值是 128、32、16 和 4,所以 128 + 32 + 16 + 4 = 180。每四位一组得到 1011 和 0100,也就是 B 和 4,所以十六进制是 B4。
再反过来验证。把 180 当作十进制输入。不断除以 2,余数依次是 0、0、1、0、1、1、0、1。
自下而上读出来,又是 10110100。因为恰好是 8 位,工具还会补充:按二进制补码,它的值是 180 − 256 = −76。
有哪些假设和限制?
- 最多 4 个不同的输入(A 到 D),表达式最长 80 个字符。
- 工具使用提示中写明的优先级(NOT,然后 AND/NAND,再 XOR,最后 OR/NOR)。考试可能改为画电路图,所以为保险起见请加括号。
- 数值输入限于 16 位二进制、4 位十六进制,或十进制 0 到 65535。不处理负数和小数。
- 格式不正确的输入会得到错误提示,而不是猜测。
- 十六进制的 A 到 F 代表 10 到 15。
- 这是练习辅助工具,不是官方考试工具。
哪些课程解释了这些结果?
布尔表达式先看计算带括号的逻辑表达式,再看构建真值表。如果你的表与工具不同,请读用分情况的方式比较两个等价表达式。逻辑电路见解读简单的逻辑电路,用正确的布尔分组组合条件则展示了数据库查询里同样的括号问题。
数制部分请看二进制与十进制之间的转换和把十六进制当作紧凑的表示方式。更广的主题有布尔逻辑和数字与文字的表示。综合题见布尔逻辑练习题。
如果你想让老师检查你的真值表和数制转换,请看线上一对一 Computer Science 补习。更多工具见学习工具目录。