跳到正文
IGCSE·Tuition
计算机科学 · 课程

计算带括号的逻辑表达式

布尔表达式看起来很短,但一个括号放错位置,整个答案就会反过来。

本页内容
  1. 三个运算符分别做什么?
  2. 一步一步怎么算
  3. 例题
  4. 常见错误
  5. 自测
  6. 接下来学什么?

计算布尔表达式时,先把每个字母换成它的值(1 代表真,0 代表假),再按固定顺序算运算符:先括号,再 NOT,再 AND,最后 OR。每一步都会得到新的 1 或 0,所以再长的表达式也只是一串小判断。

这项技能位于布尔逻辑模块的开头,后面的真值表(truth table)、逻辑电路,以及你自己写算法时用到的条件,都以它为基础。

三个运算符分别做什么?

  • NOT 把值反过来:NOT 1 = 0,NOT 0 = 1。
  • AND 只有当两个输入都是 1 时才得 1。
  • OR 只要至少有一个输入是 1 就得 1。

在剑桥风格的伪代码里,它们直接写成 NOT、AND 和 OR。放进条件语句里是这样:

IF (Age >= 13) AND NOT (HasConsent) THEN
   OUTPUT "Ask a parent first"
ENDIF

一步一步怎么算

  1. 代入:把每个字母的值写在字母下面。
  2. 算括号:从最里面的一层开始。
  3. 算 NOT:作用于紧跟其后的一个值或一组括号。
  4. 算 AND:从左到右。
  5. 最后算 OR,得到的 1 或 0 就是答案。

例题

当 A = 0、B = 1、C = 0 时,求 Q = (A OR B) AND NOT C。

第 1 步,代入:(0 OR 1) AND NOT 0。

**第 2 步,括号:**0 OR 1 = 1,表达式变成 1 AND NOT 0。

**第 3 步,NOT:**NOT 0 = 1,表达式变成 1 AND 1。

**第 4 步,AND:**1 AND 1 = 1。

**Q = 1。**现在把 C 改成 1 再算一遍:(0 OR 1) AND NOT 1 = 1 AND 0 = 0。输入变了一个,输出跟着变,步骤却完全一样。

常见错误

有的同学不理会运算顺序,直接从左算到右。取 A = 1、B = 0、C = 0,表达式是没有括号的 A OR B AND C。

错误做法:(1 OR 0) AND 0 = 1 AND 0 = 0。

AND 比 OR 先算,所以正确做法是 1 OR (0 AND 0) = 1 OR 0 = 1。如果题目真的有括号,写成 (A OR B) AND C,答案才是 0。括号决定答案,所以要原样抄下,不要移动它。

你可以用 Python 检验自己的推理,因为 a or b and c 的顺序相同。受限伪代码追踪训练器和安全的 Python 推理沙盒适合用来检查小例子。

自测

1. 当 X = 1、Y = 1 时,求 NOT (X AND Y)。

查看答案

先算括号:1 AND 1 = 1。再 NOT 1 = 0。

2. 当 P = 0、Q = 1、R = 1 时,求 (P OR Q) AND NOT R。

查看答案

(0 OR 1) = 1。NOT 1 = 0。再 1 AND 0 = 0。

3. 当 A = 0、B = 1、C = 0 时,求 NOT A OR B AND C(没有括号)。

查看答案

先 NOT:NOT 0 = 1。再 AND:1 AND 0 = 0。最后 OR:1 OR 0 = 1。

接下来学什么?

当计算变得顺手后,继续学习制作真值表,对每一种可能的输入计算同一个表达式。然后试试布尔逻辑练习。布尔与数字表示实验室可以让你测试自己的小表达式。

如果你明白每条规则,布尔题的答案却还是出错,老师可以和你一起追踪那个失误。这正是我们一对一线上计算机科学补习关注的重点。

常见问题

AND 和 OR 哪个先算?

AND 先于 OR,而 NOT 又先于两者。括号的优先级最高,所以括号里的部分永远最先算。如果拿不准,可以自己加括号,把顺序写清楚,这样就不会有第二种读法。

NOT 是作用于整个表达式,还是只作用于后面一个值?

NOT 只作用于紧跟在它后面的一个值或一组括号。在 NOT A AND B 中,只有 A 被取反。在 NOT (A AND B) 中,先算括号,再整体取反。对某些输入,这两种写法的结果并不相同。

学布尔逻辑需要会 Python 吗?

不需要。考试答案使用伪代码和逻辑符号。Python 只是用来检验自己的推理,因为 and、or、not 的运算顺序和伪代码里的 AND、OR、NOT 一样。

资料来源

  1. Cambridge IGCSE Computer Science 0478 syllabus page

更新于:

下一步

如果你在课堂上看得懂运算顺序,遇到较长的表达式却还是算错,一对一老师可以逐行检查你的步骤,找出出错的那一步。

一小时付费试听课,按所安排老师确认的收费,RM80 起。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

家长:在这里咨询

  • 已通过我们的服务帮助 9,000+ 名学生
  • 9+ 年帮助 IGCSE 学生