信息学奥赛知识点(十一)----逻辑运算
一、介绍
逻辑运算又称布尔运算。布尔用数学方法研究逻辑问题,成功地建立了逻辑演算。他用等式表示判断,把推理看作等式的变换。这种变换的有效性不依赖人们对符号的解释,只依赖于符号的组合规律 。
二、计算机编程中的逻辑运算
1.运算优先级表
| 优先级 | 运算符 | 说明 | 结合性 |
|---|---|---|---|
| 1 | :: | 范围解析 | 自左向右 |
2 | ++ -- | 后缀自增/后缀自减 | |
| () | 括号 | ||
[ ] | 数组下标 | ||
| . | 成员对象 | ||
| -> | 指针 | ||
| 3 | ++ -- | 前缀自增/前缀自减 | 自右向左 |
| + - | 加 减 | ||
| ! ~ | 逻辑非 / 按位取反 | ||
| type | 强制类型转换 | ||
| * | 取指针 | ||
| & | 取地址 | ||
| sizeof() | 某某的大小 | ||
| 4 | .* ->* | 成员对象选择,成员指针选择 | 自左向右 |
| 5 | * / % | 乘 除 取余 | |
| 6 | + - | 加 减 | |
| 7 | < <= > >= | 小于 小于等于, 大于,大于等于 | |
| 8 | !ERROR! illegal character '!' | 等于 不等于 | |
| 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。
三、数学中的逻辑运算
| 符号 | 名称 |
| ∧ | 且 |
| ∨ | 或 |
| ┐ | 非 |
| ⊕ | 异或 |
| 符号 | 名称 |
| 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}
扫描二维码推送至手机访问。
版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。





