软件设计师精讲 数据的表示 逻辑运算
https://www.bilibili.com/video/BV13U4y1E7oA/?p=7
关系运算符
关系运算符及其优先次序
< | 小于 | 优先级相同(高) |
---|---|---|
<= | 小于或等于 | |
> | 大于 | |
>= | 大于或等于 |
== | 等于 | 优先级相同(低) | |
---|---|---|---|
!= | 不等于 |
说明:
- 关系运算符的优先级低于算术运算符
- 关系运算符的优先级高于赋值运算符
逻辑运算
逻辑变量之间的运算称为逻辑运算。
二进制数1和0在逻辑上可以代表“真”与“假”。
逻辑运算 | 逻辑或(||、+、∪、∨、OR):连接的两个逻辑值全0时才取0 |
---|---|
逻辑与(&&、*、·、∩、∧、AND):连接的两个逻辑值全1时才取1 | |
逻辑异或(⊕、XOR):连接的两个逻辑值不相同时才取1,相同则取0 | |
逻辑非(!、¬、~、NOT、-):将原逻辑值取反即可 |
真值表:描述一个逻辑表达式与其变量之间的关系
A | B | !A | A+B | A*B | A⊕B |
---|---|---|---|---|---|
0 | 0 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 1 | 1 | 0 |
逻辑运算符
&& (逻辑与)相当于其他语言中的AND
|| (逻辑或)相当于其他语言中的OR
! (逻辑非) 相当于其他语言中的NOT
例: a&&b 若a,b为真,则 a&&b 为真。
a || b 若 a,b 之一为真,则 a||b 为真。
! a 若a 为真,则 !a 为假。
优先次序:
!(非)-> &&(与) -> ||(或)
逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符
因此运算符的优先顺序为:!>算术运算符>关系运算符>&&>||>赋值运算符
先做 !
然后算术运算 * / + -
之后关系运算 > ≥ ≤ < == !=
最后做逻辑运算,先做 与 &&、再做 或 ||
短路原则
在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。
(1)a&&b&&c 只有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值
(2)a||b||c 只要a为真,就不必判断b和c的值,只有a为假,才判断b。a和b都为假才判断c
例:(m=a>b)&&(n=c>d)
|
例题讲解
要判断字长为16位的整数a的低四位是否全为0,则(A)。
A、将 a 与 0x000F 进行“逻辑与”运算,然后判断运算结果是否等于0
B、将 a 与 0x000F 进行“逻辑或”运算,然后判断运算结果是否等于F
C、将 a 与 0x000F 进行“逻辑异或”运算,然后判断运算结果是否等于0
D、将 a 与 0x000F 进行“逻辑与”运算,然后判断运算结果是否等于F
解:十六位,一个是4位,低4位就是f
和 f 逻辑与是0 的会是?1和1相与是1,0和1相与是0;
和 f 逻辑或为f 的会是?1和1相或是1,0和1相或也是1;
和1异或为0的会是?1和1异或是0;0和1异或是1;
和1逻辑与为 1 的会是? 1?
原题解:
对布尔表达式进行短路求值是指:无须对表达式中所有操作数或运算符进行计算就可确定表达式的值。对于表达式“a or ((c<d) and b)”,
(B)时可进行短路计算。
A、d 为 true
B、a 为 true
C、b 为 true
D、c 位 true