逻辑运算符

· · 个人记录

整理了几天,终于是把逻辑运算符搞清楚了(话说为什么逻辑运算符乱七八糟的,书面有一种写法,程序又有一种写法)。

注意,此处笔者介绍的为书面的写法(即它们在 CSP 初赛出的题目出现的形式)。

1、概念介绍

逻辑运算符有以下几个:

2、优先级

括号 >>> 或、异或。\

## 3、运算规则 1. ${\color{red}\colorbox{white}{非}}$:若 $x=0$,则 $\neg x = 1$;若 $x=1$,则 $\neg x = 0$。 2. ${\color{red}\colorbox{white}{与}}$:$1\land1=1$,$1\land0=0$,$0\land0=0$(只有两个都为 $1$ 时结果才为 $1$,其余情况为 $0$)。 3. ${\color{red}\colorbox{white}{或}}$:$1\lor1=1$,$1\lor0=1$,$0\lor0=0$(只有两个都为 $0$ 时结果才为 $0$,其余情况为 $1$)。 4. ${\color{red}\colorbox{white}{异或}}$:$1$ ^ $1=0$,$1$ ^ $0=1$,$0$ ^ $0=0$(只有一个 $0$ 一个 $1$ 时才为 $1$,其余情况为 $0$)。 ## 4、练习题 ### 例题 $1$: 已知 $x=false$,$y=true$,$z=false$。下列哪个表达式的结果为 $true$? A.$(\neg\ x\lor y)\land z$ $\qquad\qquad\qquad$B.$(x\land y)\lor z

C.(x\lor \neg z)\lor y \qquad\qquad\qquadD.(x ^ y)\land z

要判断一个逻辑表达式的结果时,有个小技巧:从最后一步看起(不明白的话看下面我的分析)。

A 选项中,我们先把 (\neg x \lor y) 看成一个整体,表达式变成了 ?\land z=?\land 0=0,就没有必要再纠结于那个整体的结果了。

但并非所有表达式都能这样,比如 B 选项:把 (x\land y) 看成一个整体,原表达式化为 ?\lor z,但此时我们无法判断结果,所以要继续求整体的值。

原式 =(0\land 1)\lor0

\qquad=0\lor0 \qquad=0

同理,大家可以根据上面的方法计算出 C,D 选项的值(此处省略)。

### 例题2: 求 $8\lor13$ 和 $8\land13$ 的值。 如果遇到这种十进制整数之间的逻辑运算,需要先将十进制整数化成二进制数,再进行逐位运算。 $(8)_{10}=(1000)_2$,$(13)_{10}=(1101)_2$。 $(8\lor13)_{10}=(1000\lor1101)_2$,竖式如下: $\quad 1000 \,\ \lor 1101 ^{—————} \quad 1101 $\quad 1000 \,\ \land 1101 ^{—————} \quad 1000

如果本篇文章对你有帮助,别忘了点个赞哦!最后,祝大家在 CSP 中取得好成绩!