“软件设计师精讲 数据的表示 逻辑运算”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
 
(未显示同一用户的11个中间版本)
第2行: 第2行:
  
 
==== 关系运算符 ====
 
==== 关系运算符 ====
 +
关系运算符及其优先次序
 +
{| class="wikitable"
 +
!<
 +
!小于
 +
! rowspan="4" |优先级相同(高)
 +
|-
 +
!<=
 +
!小于或等于
 +
|-
 +
!>
 +
!大于
 +
|-
 +
!>=
 +
!大于或等于
 +
|}
 +
{| class="wikitable"
 +
!==
 +
!等于
 +
! colspan="2" rowspan="2" |优先级相同(低)
 +
|-
 +
!!=
 +
!不等于
 +
|}
 +
说明:
 +
 +
* 关系运算符的优先级低于算术运算符
 +
* 关系运算符的优先级高于赋值运算符
 +
 +
==== 逻辑运算 ====
 +
逻辑变量之间的运算称为逻辑运算。
 +
 +
二进制数1和0在逻辑上可以代表“真”与“假”。
 +
{| class="wikitable"
 +
! rowspan="4" |逻辑运算
 +
|<nowiki>逻辑或(||、+、∪、∨、OR):连接的两个逻辑值全0时才取0</nowiki>
 +
|-
 +
|逻辑与(&&、*、·、∩、∧、AND):连接的两个逻辑值全1时才取1
 +
|-
 +
|逻辑异或(⊕、XOR):连接的两个逻辑值不相同时才取1,相同则取0
 +
|-
 +
|逻辑非(!、¬、~、NOT、-):将原逻辑值取反即可
 +
|}
 +
真值表:描述一个逻辑表达式与其变量之间的关系
 +
{| class="wikitable"
 +
!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
 +
 +
{| class="wikitable"
 +
|例:(m=a>b)&&(n=c>d)
 +
 +
 +
当a=1,b=2,c=3,d=4,m和n的原值为1时,由于"a>b"的值为0,因此m=0,而"n=c>d"不被执行,因此n的值不是0而仍保持原值1。
 +
|}
 +
 +
=== 例题讲解 ===
 +
要判断字长为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

2024年4月10日 (三) 15:15的最新版本

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)


当a=1,b=2,c=3,d=4,m和n的原值为1时,由于"a>b"的值为0,因此m=0,而"n=c>d"不被执行,因此n的值不是0而仍保持原值1。

例题讲解

要判断字长为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