资源简介 (共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,那用什么运算能实现这个结果呢?252 5运算符 名称 功 能+ 加法 求两个数的和,例如8+9=17 减法 求两个数的差,例如20 9=11* 乘法 求两个数的积,例如20*5=100/ 除法 求两个数的商,例如20/5=4% 取余 求两个数的余数,例如20%9=2++ 自增1 变量自动加1 自减1 变量自动减1算术运算符252 525/10=225%10=5运算符 名称 功 能+ 加法 求两个数的和,例如8+9=17 减法 求两个数的差,例如20 9=11* 乘法 求两个数的积,例如20*5=100/ 除法 求两个数的商,例如20/5=4% 取余 求两个数的余数,例如20%9=2++ 自增1 变量自动加1 自减1 变量自动减1算术运算符37813 7 8 13781/1000=33781/100%10=73781%100/10=83781%10=1运算符 名称 功 能+ 加法 求两个数的和,例如8+9=17 减法 求两个数的差,例如20 9=11* 乘法 求两个数的积,例如20*5=100/ 除法 求两个数的商,例如20/5=4% 取余 求两个数的余数,例如20%9=2++ 自增1 变量自动加1 自减1 变量自动减1算术运算符30000ii--?i指定效果流水灯程序30000ii--29999i指定效果流水灯程序0ii++?i指定效果流水灯程序0ii++1ii++2ii++3i指定效果流水灯程序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真1a==b假0a!=b真1sbit S1=P1^0;S1==0真1表示开关拨到了位置3假0表示开关拨到了位置1S1!=1S1==1真1表示开关拨到了位置3假0表示开关拨到了位置1S1!=0a==b>c a==(b>c)> ,< , >= , <= 优先于 ==,!=逻辑运算符真真真逻辑与:&&表达式1 && 表达式2&&=真&&=假假真&&=假假&&=假假假逻辑或: ||表达式1 || 表达式2真真真||=真||=假真=假=假假假||||真真逻辑非: !!表达式真!=假!=假真真真真逻辑与:&&逻辑或: ||逻辑非: !逻辑运算符表达式1 && 表达式2&&=真&&=假假真&&=假假&&=假假假表达式1 || 表达式2真真真||=真||=假真=假=假假假||||真真!表达式真!=假!=假真逻辑与:&&逻辑或: ||逻辑非: !逻辑运算符表达式1 && 表达式2表达式1 || 表达式2!表达式6≤age<18age>=6age<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出1a b a&b0 0 00 1 01 0 01 1 1x&0=0 //x代表0或者1x&1=x //x代表0或者1按位或运算:|运算法则:有1出1,全0出0a b a|b0 0 00 1 11 0 11 1 1x|0=x //x代表0或者1x|1=1 //x代表0或者1按位异或运算:^运算法则:相同为0,不同为1a b a^b0 0 00 1 11 0 11 1 0x^0=x //x代表0或者1x^1=取反 //x代表0或者1按位取反运算:~运算法则:把1变0,把0变1a ~a0 11 0x^0=x //x代表0或者1x^1=取反 //x代表0或者1按位与 &:按位或 |:按位异或 ^:按位取反 ~:按位与 &:将一个二进制数的指定位清0按位或 |:将一个二进制数的指定位置1按位异或 ^:将一个二进制数的指定位取反按位取反 ~:将一个二进制数的所有位都取反按位与运算符:&逻辑与运算符:&&按位或运算符:|逻辑或运算符:||左移运算:<<a<a=182;转换成二进制形式0 1 1 0 1 1 0 01D7 D6 D5 D4 D3 D2 D1 D0111110000a<左移运算:<<a<a=182;转换成二进制形式,b=1解散回家丢掉左移运算:<<a<a=182;转换成二进制形式,b=40 1 1 0 0 0 0 0a<D7 D6 D5 D4 D3 D2 D1 D01111100000001 0 1 1丢掉左移运算:<<运算法则操作数左移若干位后,高位丢弃,低位补0。左移运算:<<运算法则:操作数左移若干位后,高位丢弃,低位补0。右移运算:>>运算法则:操作数右移若干位后,低位丢弃,高位补0。a =0xa2; a>>4=0x0ab=0x5f; b<<4=0xf0c=0xfa; 0x0a|0xf0=0xfac=(a>>4)|(b<<4)把a中的高4位和b中的低4位取出来,得到一个新的数c= 0xfa,怎么做呢?P1<<=1; //把P1口的内容左移一位再赋值给P1a>>=4; //把a的内容右移4位再赋值给a变量i=i+1a=a-5x=x*(y+7)r=r%7i+=1a-=5x*=y-7r%=7加法 +=减法 -=乘法 *=除法 /=取余 %=逻辑与 &=逻辑或 |=逻辑异或 ^=逻辑非 ~=左移 <<=右移 >>=算术运算复合赋值符位运算复合赋值符赋值运算符:=变量(寄存器名或位名称)=表达式复合赋值符感谢您的观看Thanks for your attention. 展开更多...... 收起↑ 资源预览