3.3 C51运算符 课件(共47张PPT)单片机基础与应用(C语言版)

资源下载
  1. 二一教育资源

3.3 C51运算符 课件(共47张PPT)单片机基础与应用(C语言版)

资源简介

(共47张PPT)
3.3 C51运算符
《单片机基础与应用(C语言版)》
高等教育出版社
常用运算符:
算术运算符
关系运算符
逻辑运算符
位运算符
运 算 符 名 运 算 符
算术运算符 + * / % ++
关系运算符 > < == >= <= !=
逻辑运算符 ! && ||
位运算符 << >> ~ & |^
赋值运算符 =
条件运算符 :
逗号运算符 ,
指针运算符 * &
求字节数运算符 sizeof
强制类型转换运算符 (类型)
下标运算符 [ ]
函数调用运算符 ( )
运算符 名称 功 能
+ 加法 求两个数的和,例如8+9=17
减法 求两个数的差,例如20 9=11
* 乘法 求两个数的积,例如20*5=100
/ 除法 求两个数的商,例如20/5=4
% 取余 求两个数的余数,例如20%9=2
++ 自增1 变量自动加1
自减1 变量自动减1
算术运算符
22.0/4=5.5 22/4=5
运算符 名称 功 能
+ 加法 求两个数的和,例如8+9=17
减法 求两个数的差,例如20 9=11
* 乘法 求两个数的积,例如20*5=100
/ 除法 求两个数的商,例如20/5=4
% 取余 求两个数的余数,例如20%9=2
++ 自增1 变量自动加1
自减1 变量自动减1
算术运算符
运算符 名称 功 能
+ 加法 求两个数的和,例如8+9=17
减法 求两个数的差,例如20 9=11
* 乘法 求两个数的积,例如20*5=100
/ 除法 求两个数的商,例如20/5=4
% 取余 求两个数的余数,例如20%9=2
++ 自增1 变量自动加1
自减1 变量自动减1
算术运算符
取余运算的两个操作数必须是整数。
取余运算有什么用处呢?我们来看一个应用,如果我们需要把一个整数在数码管或者液晶上显示出来的话,那就需要把一个整数的每位拆分开来,一位一位进行显示,例如,要显示25这个数,我们就需要把25这个数的十位和个位拆分开来,分别是2和5,那用什么运算能实现这个结果呢?
25
2 5
运算符 名称 功 能
+ 加法 求两个数的和,例如8+9=17
减法 求两个数的差,例如20 9=11
* 乘法 求两个数的积,例如20*5=100
/ 除法 求两个数的商,例如20/5=4
% 取余 求两个数的余数,例如20%9=2
++ 自增1 变量自动加1
自减1 变量自动减1
算术运算符
25
2 5
25/10=2
25%10=5
运算符 名称 功 能
+ 加法 求两个数的和,例如8+9=17
减法 求两个数的差,例如20 9=11
* 乘法 求两个数的积,例如20*5=100
/ 除法 求两个数的商,例如20/5=4
% 取余 求两个数的余数,例如20%9=2
++ 自增1 变量自动加1
自减1 变量自动减1
算术运算符
3781
3 7 8 1
3781/1000=3
3781/100%10=7
3781%100/10=8
3781%10=1
运算符 名称 功 能
+ 加法 求两个数的和,例如8+9=17
减法 求两个数的差,例如20 9=11
* 乘法 求两个数的积,例如20*5=100
/ 除法 求两个数的商,例如20/5=4
% 取余 求两个数的余数,例如20%9=2
++ 自增1 变量自动加1
自减1 变量自动减1
算术运算符
30000
i
i--

i
指定效果流水灯程序
30000
i
i--
29999
i
指定效果流水灯程序
0
i
i++

i
指定效果流水灯程序
0
i
i++
1
i
i++
2
i
i++
3
i
指定效果流水灯程序
i=3;
j=i++;
k=++i;
i=3;
j=i++; //后置运算,先使用i的值,再做++运算,j=3,i=4
//j=i; i++;
k=++i;
i=3;
j=i++; //后置运算,先使用i的值,再做++运算,j=3,i=4
//j=i; i++;
k=++i; //前置运算,先进行++运算,再使用 i的值,i=5,k=5
//i++; k=i;
建议尽量避免++、--和其它运算用在一起,以防出错;
单独使用的++ i和i++,结果都是把i的值增1。
圆的面积公式:S=πr S=PI*r*r;
用算术运算符连接起来的式子,就叫算术表达式。
关系运算符
关系表达式:用关系运算符连接起来的式子
假定a=5;b=3;
a>b的结果是什么呢?


关系表达式:用关系运算符连接起来的式子
假定a=5;b=3;
a>b的结果是什么呢?
真1

0

1
a==b

0
a!=b

1
sbit S1=P1^0;
S1==0

1
表示开关拨到了位置3

0
表示开关拨到了位置1
S1!=1
S1==1

1
表示开关拨到了位置3

0
表示开关拨到了位置1
S1!=0
a==b>c a==(b>c)
> ,< , >= , <= 优先于 ==,!=
逻辑运算符



逻辑与:&&
表达式1 && 表达式2
&&
=

&&
=



&&
=


&&
=



逻辑或: ||
表达式1 || 表达式2



||
=

||
=


=

=



||
||


逻辑非: !
!表达式

!
=

!
=





逻辑与:&&
逻辑或: ||
逻辑非: !
逻辑运算符
表达式1 && 表达式2
&&
=

&&
=



&&
=


&&
=



表达式1 || 表达式2



||
=

||
=


=

=



||
||


!表达式

!
=

!
=


逻辑与:&&
逻辑或: ||
逻辑非: !
逻辑运算符
表达式1 && 表达式2
表达式1 || 表达式2
!表达式
6≤age<18
age>=6
age<18
&&
逻辑与:&&
逻辑或: ||
逻辑非: !
逻辑运算符
表达式1 && 表达式2
表达式1 || 表达式2
!表达式
身高>180
车子数>=1
房子数>=1
长相==帅
身高>180
车子数>=1
房子数>=1
长相==帅
&&
&&
&&
嫁给他
身高>180
车子数>=1
房子数>=1
长相==帅
||
||
||
嫁给他
!优先级别最高,其次是&&,最低是||
! > 算术运算符 > 关系运算符 > && > ||
逻辑表达式:用逻辑运算符连接起来的式子
位运算符
& 按位逻辑与 对2个运算量的二进制数按相应位进行逻辑与运算。 例如:a&b,运算结果为0
| 按位逻辑或 对2个运算量的二进制数按相应位进行逻辑或运算。 例如:a||b,运算结果为13
^ 按位逻辑异或 对2个运算量的二进制数按相应位进行逻辑异或运算。异或运算时,数值相同为0,数值相异为1。 例如:a^b,运算结果为13
~ 按位取反 对运算量的二进制数按位进行取反运算。 例如:~a,运算结果为7
<< 按位左移 把“<<”左边的运算量的各二进制位全部左移若干位,移动的位数由“<<”右边的常数指定,高位丢弃,低位补0。例如:“a<<2”是指把a的各二进制位向左移动2位,即a=00001000B(十进制数8),左移2位后为00100000B(十进制数32)。
>> 按位右移 把“>>”左边的运算量的各二进制位全部右移若干位,移动的位数由“>>”右边的常数指定。对无符号数或正数右移,低位丢弃,高位补0;对负数右移,低位丢弃,高位补1。例如:“a>>3”是指把a的各二进制位向右移动3位,即a=00001000B(十进制数8),右移3位后为00000001B(十进制数1)。
按位与运算:&
运算法则:有0出0,全1出1
a b a&b
0 0 0
0 1 0
1 0 0
1 1 1
x&0=0 //x代表0或者1
x&1=x //x代表0或者1
按位或运算:|
运算法则:有1出1,全0出0
a b a|b
0 0 0
0 1 1
1 0 1
1 1 1
x|0=x //x代表0或者1
x|1=1 //x代表0或者1
按位异或运算:^
运算法则:相同为0,不同为1
a b a^b
0 0 0
0 1 1
1 0 1
1 1 0
x^0=x //x代表0或者1
x^1=取反 //x代表0或者1
按位取反运算:~
运算法则:把1变0,把0变1
a ~a
0 1
1 0
x^0=x //x代表0或者1
x^1=取反 //x代表0或者1
按位与 &:
按位或 |:
按位异或 ^:
按位取反 ~:
按位与 &:将一个二进制数的指定位清0
按位或 |:将一个二进制数的指定位置1
按位异或 ^:将一个二进制数的指定位取反
按位取反 ~:将一个二进制数的所有位都取反
按位与运算符:&
逻辑与运算符:&&
按位或运算符:|
逻辑或运算符:||
左移运算:<<
a<a=182;转换成二进制形式
0 1 1 0 1 1 0 0
1
D7 D6 D5 D4 D3 D2 D1 D0
1
1
1
1
1
0
0
0
0
a<左移运算:<<
a<a=182;转换成二进制形式,b=1
解散回家
丢掉
左移运算:<<
a<a=182;转换成二进制形式,b=4
0 1 1 0 0 0 0 0
a<D7 D6 D5 D4 D3 D2 D1 D0
1
1
1
1
1
0
0
0
0
0
0
0
1 0 1 1
丢掉
左移运算:<<
运算法则
操作数左移若干位后,高位丢弃,低位补0。
左移运算:<<
运算法则:
操作数左移若干位后,高位丢弃,低位补0。
右移运算:>>
运算法则:
操作数右移若干位后,低位丢弃,高位补0。
a =0xa2; a>>4=0x0a
b=0x5f; b<<4=0xf0
c=0xfa; 0x0a|0xf0=0xfa
c=(a>>4)|(b<<4)
把a中的高4位和b中的低4位取出来,得到一个新的数c= 0xfa,怎么做呢?
P1<<=1; //把P1口的内容左移一位再赋值给P1
a>>=4; //把a的内容右移4位再赋值给a变量
i=i+1
a=a-5
x=x*(y+7)
r=r%7
i+=1
a-=5
x*=y-7
r%=7
加法 +=
减法 -=
乘法 *=
除法 /=
取余 %=
逻辑与 &=
逻辑或 |=
逻辑异或 ^=
逻辑非 ~=
左移 <<=
右移 >>=
算术运算复合赋值符
位运算复合赋值符
赋值运算符:=
变量(寄存器名或位名称)=表达式
复合赋值符
感谢您的观看
Thanks for your attention.

展开更多......

收起↑

资源预览