逻辑运算符
chlchl
·
·
个人记录
整理了几天,终于是把逻辑运算符搞清楚了(话说为什么逻辑运算符乱七八糟的,书面有一种写法,程序又有一种写法)。
注意,此处笔者介绍的为书面的写法(即它们在 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 中取得好成绩!