信息学奥赛知识点(十二)逻辑运算

内容纲要

一、介绍

逻辑运算又称布尔运算。布尔用数学方法研究逻辑问题,成功地建立了逻辑演算。他用等式表示判断,把推理看作等式的变换。这种变换的有效性不依赖人们对符号的解释,只依赖于符号的组合规律 。

二、计算机编程中的逻辑运算

1.运算优先级表

优先级 运算符 说明 结合性
1 :: 范围解析 自左向
2 ++ -- 后缀自增/后缀自减
() 括号
[ ] 数组下标
. 成员对象
-> 指针
3 ++ -- 前缀自增/前缀自减 自右向左
+ - 加 减
! ~ 逻辑非 / 按位取反
type 强制类型转换
* 取指针
& 取地址
sizeof() 某某的大小
4 . -> 成员对象选择,成员指针选择 自左向右
5 * / % 乘 除 取余
6 + - 加 减
7 < <= > >= 小于 小于等于, 大于,大于等于
8 == != 等于 不等于
9 & 按位与
10 ^ 按位异或
11 | 按位或
12 && 与运算
13 || 或运算
14 ? : 三目运算符 自右向左
15 = 赋值
+= -= 相加后赋值/相减后赋值
*= /= %= 相乘/相除/取余 后赋值
<<= >>= 位左移/右移 后赋值
&= ^= |= 位与运算/异或运算/或运算 赋值
16 逗号

同一优先级的运算符,结合次序由结合方向所决定。简单记就是:

!> 算术运算符 > 关系运算符 > && > || > 赋值运算符。

或者:
算术运算 > 移位运算 > 关系运算 > 位运算 > 逻辑运算 > 赋值运算

2. 位运算符(区别于逻辑运算符)

符号 名称 说明 示例
& 按位与 把参与运算的两个数对应的二进制位想与,只有对应的二进制都是1时,结果才为1,否则为0 9&5中9可以写成00001001。5可以写成00000101,那么9&5的运算结果为0000 0001。输出为1
| 按位或 把参与运算的两个数对应的二进制位相或,也就是只要两个数中只要有一个为1,结果为1. 9|5中9可以写成00001001。5可以写成00000101,那么9|5的运算结果为0000 1101。输出为13
^ 按位异或 把参与运算的两个数对应二进制相异或,对应的二进制数组不相同时,结果为1,否则为0。 1^1=0,1^0=1,0^0=0 0^1=1 9|5中可以写成00001001^00000101 =00001100,结果是12
~ 按位取反 把运算数的各个二进制按位求反 ~9相当于 ~(00001001),结果是11110110
<< 左移 把<<左边的数的各二进制位向左移若干位。把<<右边的数是指定移动的位数,高位丢弃,低位补0。 a<<4,a=00000011(十进制3),左移4位是为00110000(十进制为48)
>> 右移 把>>左边的数的各二进制位向右移若干位。把<<右边的数是指定移动的位数, a=15,a>>2表示把00001111右移0000 0011(十进制3)

3.逻辑运算符

符号 名称 说明 示例
&& 1 && 0 =0
|| 1 || 0 = 1
^ 异或 1 ^ 1 =0
! 1 = 0
== 等于
> 大于
< 小于
!= 不等于
<= 小于等于
>= 大于等于

运算顺序: 非>与>或

举例

a=true, b= true, c =false

a || b && c

如果先 || 后 && 结果是0
如果先 && 后 || 结果是1
正确结果应该是1。


4. 运算规则与区别(真值表)

数据 运算
p q 非(p) 异或

一真或为真,一假且为假,

相同异或为0,不同为1

区别:

位运算一般指的是计算,类似于加减,结果是一个数字

逻辑运算一般指的是布尔运算,结果有true或false。

注,数字也可逻辑运算

例如:22 && 5

22 00010110

5 00000101


​ 00000100 答案是4

三、数学中的逻辑运算

符号 名称
异或
符号 名称
and
or
not
xor 异或

四、集合中逻辑运算(提高组)

符号 名称
~

说明:

  1. 表示并运算(类似加法),指的是两个集合(例如A和B)里面所有的元素组成一个新集合。

    A={1,2,4,8} B={2,5,6,7,3} 则A∪B={1,2,3,4,5,6,7}

  2. 表示并运算,指的是两个集合(例如A和B)里面所有的元素重叠部分组成一个新集合

    A={1,2,4,8} B={2,5,6,7} 则A∩B={2}

  3. -表示减运算。就是A集合删去A∩B里元素的后组成一个新的集合。

    A={1,2,4,8} B={2,5,6,7} 则A-B={1,4,8}

  4. ~表示非运算,比较特别,比如说是~A

    A={1,2,4,8},~A无法直接求解,必须要有全集。假如全集是{1,2,3,4,5,6,7,8}。那么~A就是全集删去A集合剩余的元素,组成 一个新的集合。结果是{3,5,6,7}

阅读剩余
THE END