打印
[经验分享]

逻辑运算

[复制链接]
928|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yorkbarney|  楼主 | 2024-8-12 20:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1. 赋值运算符
赋值运算符“=”,在 C51 中,它的功能是将一个数据的值赋给一个变量,如 x=10。
利用赋值运算符将一个变量与一个表达式连接起来的式子称为赋值表达式,在赋值表达式的后面加一个分号“;”就构成了赋值语句,一个赋值语句的格式如下:
变量=表达式;
执行时先计算出右边表达式的值,然后赋给左边的变量。
例如: x=8+9; /将 8+9 的值赋绐变量 x/
x=y=5; /将常数 5 同时赋给变量 x 和 y/
在 C51 中,允许在一个语句中同时给多个变量赋值,赋值顺序自右向左。

2. 算术运算符
C51 中支持的算术运算符有:

加或取正值运算符
减或取负值运算符
乘运算符
/ 除运算符
% 取余运算符
加、减、乘运算相对比较简单,而对于除运算,如相除的两个数为浮点数,则运算的结果也为浮点数,如相除的两个数为整数,则运算的结果也为整数,即为整除。如 25.0/20.0 结果为 1.25,而 25/20 结果为 1。
对于取余运算,则要求参加运算的两个数必须为整数,运算结果为它们的余数。例如:x=5%3,结果 x 的值为 2。

3. 关系运算符
C51 中有 6 种关系运算符:

大于
< 小于
= 大于等于
<= 小于等于
= = 等于
!= 不等于
关系运算用于比较两个数的大小,用关系运算符将两个表达式连接起来形成的式子称为关系表达式。关系表达式通常用来作为判别条件构造分支或循环程序。关系表达式的一般形式如下:
表达式 1 关系运算符 表达式 2
关系运算的结果为逻辑量,成立为真(1),不成立为假(0)。其结果可以作为一个逻辑量参与逻辑运算。例如:5>3,结果为真(1),而 10= =100,结果为假(0)。
注意:关系运算符等于“= =”是由两个“=”组成。

4. 逻辑运算符
C51 有 3 种逻辑运算符:
|| 逻辑或
&& 逻辑与
! 逻辑非
关系运算符用于反映两个表达式之间的大小关系,逻辑运算符则用于求条件式的逻辑值,用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。
逻辑与,格式:
条件式 1 && 条件式 2
当条件式 1 与条件式 2 都为真时结果为真(非 0 值),否则为假(0 值)。
逻辑或,格式:
条件式 1 || 条件式 2
当条件式 1 与条件式 2 都为假时结果为假(0 值),否则为真(非 0 值)。逻辑非,格式:
!条件式
当条件式原来为真(非 0 值),逻辑非后结果为假(0 值)。当条件式原来为假(0 值),逻辑非后结果为真(非 0 值)。
例如:若 a=8,b=3,c=0,则!a 为假,a && b 为真,b && c 为假。

5. 位运算符
C51 语言能对运算对象按位进行操作,它与汇编语言使用一样方便。位运算是按位对变量进行运算,但并不改变参与运算的变量的值。如果要求按位改变变量的值,则要利用相应的赋值运算。C51 中位运算符只能对整数进行操作,不能对浮点数进行操作。C51 中的位运算符有:
& 按位与
| 按位或
^ 按位异或
~ 按位取反
<< 左移

右移
【例】设 a=0x45=01010100B,b=0x3b=00111011B,则 a&b、a|b、a^b、~a、 a<<2、b>>2 分别为多少?
a&b=00010000b=0x10。 a|b=01111111B=0x7f。 a^b=01101111B=0x6f。
~a=10101011B=0xab。 a<<2=01010000B=0x50。 b>>2=00001110B=0x0e。

6. 复合赋值运算符
C51 语言中支持在赋值运算符“=”的前面加上其它运算符,组成复合赋值运算符。下面是 C51 中支持的复合赋值运算符
+= 加法赋值 ?+ 减法赋值
= 乘法赋值 /= 除法赋值
%= 取模赋值 &= 逻辑与赋值
|= 逻辑或赋值 ^= 逻辑异或赋值
~= 逻辑非赋值 >>= 右移位赋值
<<= 左移位赋值
复合赋值运算的一般格式如下:变量 复合运算赋值符 表达式
它的处理过程:先把变量与后面的表达式进行某种运算,然后将运算的结果赋给前面的变量。其实这是 C51 语言中简化程序的一种方法,大多数二目运算都可以用复合赋值运算符简化表示。例如:a+=6 相当于 a=a+6;a=5 相当于 a=a*5; b&=0x55 相当于 b=b&0x55;x>>=2 相当于 x=x>>2。

7. 逗号运算符
在 C51 语言中,逗号“,”是一个特殊的运算符,可以用它将两个或两个以上的表达式连接起来,称为逗号表达式。逗号表达式的一般格式为:
表达式 1,表达式 2,……,表达式 n
程序执行时对逗号表达式的处理:按从左至右的顺序依次计算出各个表达式的值,而整个逗号表达式的值是最右边的表达式(表达式 n)的值。例如: x=(a=3,6*3)结果 x 的值为 18。

8. 条件运算符
条件运算符“?:”是 C51 语言中唯一的一个三目运算符,它要求有三个运算对象,用它可以将三个表达式连接在一起构成一个条件表达式。条件表达式的一般格式为:
逻辑表达式?表达式 1:表达式 2
其功能是先计算逻辑表达式的值,当逻辑表达式的值为真(非 0 值)时,将计算的表达式 1 的值作为整个条件表达式的值;当逻辑表达式的值为假(0 值)
时, 将计算的表达式 2 的值作为整个条件表达式的值。例如:条件表达式 max=(a>b)?a:b 的执行结果是将 a 和 b 中较大的数赋值给变量 max。

9. 指针与地址运算符
指针是 C51 语言中的一个十分重要的概念,在 C51 中的数据类型中专门有一种指针类型。指针为变量的访问提供了另一种方式,变量的指针就是该变量的地址,还可以定义一个专门指向某个变量的地址的指针变量。
为了表示指针变量和它所指向的变量地址之间的关系,C51 中提供了两个专门的运算符:

指针运算符
& 取地址运算符
指针运算符“”放在指针变量前面,通过它实现访问以指针变量的内容为地址所指向的存储单元。例如:指针变量 p 中的地址为 2000H,则p 所访问的是地址为 2000H 的存储单元,x=p,实现把地址为 2000H 的存储单元的内容送给变量 x。
取地址运算符“&”放在变量的前面,通过它取得变量的地址,变量的地址通常送给指针变量。例如:设变量 x 的内容为 12H,地址为 2000H,则&x 的值为 2000H,如有一指针变量 p,则通常用 p=&x,实现将 x 变量的地址送给指针变量 p,指针变量 p 指向变量 x,以后可以通过p 访问变量 x。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

1168

帖子

1

粉丝