运算符和表达式_第1页
运算符和表达式_第2页
运算符和表达式_第3页
运算符和表达式_第4页
运算符和表达式_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

运算符和表达式第一页,共七十三页,编辑于2023年,星期三§3.0预备知识计算机中数的表示及进制转换数码、基与权数码:表示数的符号基:数码的个数权:每一位所具有的值数制:二进制、八进制、十进制、十六进制各种进制之间的转换非十进制(二、八、十六进制)转换成十进制方法:按权相加十进制转换成非十进制(二、八、十六进制)方法:除基反序取余(整数部分)第二页,共七十三页,编辑于2023年,星期三二进制与八进制之间的转换二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制八进制转换成二进制:用3位二进制数代替每一位八进制数二进制与十六进制之间的转换二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制十六进制转换成二进制:用4位二进制数代替每一位十六进制数第三页,共七十三页,编辑于2023年,星期三字节和位内存以字节为单元组成每个字节有一个地址一个字节一般由8个二进制位组成每个二进位的值是0或1数值的表示方法——原码、反码和补码原码:最高位为符号位,其余各位为数值本身的绝对值反码:正数:反码与原码相同负数:符号位为1,其余位对原码取反补码:正数:原码、反码、补码相同负数:最高位为1,其余位为原码取反,再对整个数加1第四页,共七十三页,编辑于2023年,星期三原码反码补码数的范围01111111~11111111(-127~+127)01111111~10000000(-127~+127)01111111~10000000(-128~+127)(用一字节表示数)第五页,共七十三页,编辑于2023年,星期三§3.1C语言的数据类型数据类型基本类型构造类型指针类型空类型void整型实型字符型char单精度型float数组型双精度型double结构体类型struct共用体类型union枚举类型enum有符号无符号基本整型int短整型short长整型long基本整型unsignedint短整型unsignedshort长整型unsignedlong自定义类型typedef数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作第六页,共七十三页,编辑于2023年,星期三§3.2常量与变量一、标识符1、定义:可用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。2、命名规则:

①由字母、数字、下划线组成

②以字母或下划线打头③区分大小写④命名尽量做到“见名知义”⑤TurboC允许标识符最大长度32个字符,建意不超过8个字符⑥不允许和关键字相同第七页,共七十三页,编辑于2023年,星期三二、常量1、常量:在程序运行过程中,值不变的量。2、直接常量:即常数。如1、2、35、‘a’。可以分为实型、整型、字符型。其特点是从字面上即可判定它们是某一类型的常量。也称“字面常量”3、符号常量:在一个程序中指定用一个符号代表一个常量。符号常量用#define命令定义。其值不能改变。习惯上用大写。如在程序的开头有如下定义:#definePI3.1415926

则在整个程序中可用“PI”代替3.1415926进行运算第八页,共七十三页,编辑于2023年,星期三例1:符号常量的应用#definePRICE30main(){ intnum,total; num=10; total=num*PRICE; printf("total=%d",total);}第九页,共七十三页,编辑于2023年,星期三三、变量1、定义:在程序运行的过程中,值可以改变的量。2、变量的属性:变量名:合法标识符。变量值:变量的存储空间中存放的变量的内容。存储单元:变量定义后,为其分配存储空间的起始位置。12a变量名(符号地址)变量值存储单元(物理地址)第十页,共七十三页,编辑于2023年,星期三3、变量的使用:先定义,后使用。原因:1、编译程序不能翻译未定义变量。2、编译程序在编译时根据变量类型确定存储单元的数量。3、编译程序在编译时根据变量类型进行语法检查。例:整型变量a、b可以进行“求余”运算a%b若把a、b定义为实数,则上述运算非法。第十一页,共七十三页,编辑于2023年,星期三一、整型常量:有三种表示形式1、十进数形式:1、98、3452、八进数形式:以0开头的数字。01、0763、十六进数形式:以0x开头的数字。0x3F、0x765§3.3整型数据第十二页,共七十三页,编辑于2023年,星期三二、整型变量:(有符号和无符号)类型有符号无符号基本型(简称整型)intunsignedint

短整型short或shortintunsignedshort

长整型long或longintunsignedlong说明:无符号型加unsigned修饰符表示,只表示正数,无符号位。各类型数据所占宽度和范围见书43页表3.1第十三页,共七十三页,编辑于2023年,星期三三、整型变量的定义1、变量的定义一般在函数的开头部分;也可以在其它位置,但定义的位置影响变量的作用范围。2、一条定义语句可定义多个同种类型的变量,各变量之间用逗号分隔。

3、变量类型符与其后所定义变量之间用空格分隔。

如:

inta;unsignedshortb,c;longd;第十四页,共七十三页,编辑于2023年,星期三四、整型常量的类型整型常量赋值给整型变量时的注意事项:1、如果一个整型常量在-32768~32767之间,可以赋给int型和变量longint型变量。2、如果一个整型常量在-231~231-1之间,可以赋给longint型变量3、常量中没有无符号型,但非负常量可以赋给无符号变量4、在一个整型常量后加一个字母l或L,则编译器把该整型常量作为long类型处理。如:123L、0L

第十五页,共七十三页,编辑于2023年,星期三一、实型常量:实数又称为浮点数,有两种表示形式1、十进制数形式:由数字和小数点组成(必须有小数点)

如:43.2、89.、.862、指数形式:即科学计数法。如:45e2相当于45×102、34e5相当于34×105。字母e前必须有数字,字母e后必须是整数。“规范化指数形式”:在指数形式中,小数部分中的小数点前有且只有一位非零数字。§3.4实型数据第十六页,共七十三页,编辑于2023年,星期三二、实型变量(分为三种类型)1、单精度型(float):一般占4个字节,有效数位为7位2、双精度型(double):一般占8个字节,有效数位为15位3、长双精度型(longdouble):一般占16个字节,有效数位为18位实型常量不分单、双精度。可任意赋值,但有效数位不同。三、实型数据的舍入误差第十七页,共七十三页,编辑于2023年,星期三§3.5字符型数据一、字符型常量:用一对单引号括起来的一个字符。说明:.单引号不是字符常量的一部分,只是一种界定符。.单引号内不能是单撇号或反斜杠。二、字符常量的分类:1、普通字符:如:‘1’、‘a’、‘A’、‘*’2、转义字符:也称控制字符。说明:.用反斜杠开头后面跟一个字母代表一个控制字符。.\\代表字符反斜杠;\‘代表撇号字符.反斜杠后面的字符失去原来的含义第十八页,共七十三页,编辑于2023年,星期三字符形式功能\n回车换行符\t横向跳格:跳到下一个输出区(每一输出区为8个字符位置)\b退格\r回车不换行(回到本行起始字符位置)\f走纸换页\\反斜杠字符\\'单引号(撇号)'\ddd1~3位八进制数所代表的字符。如\101表示'A'\xhh1~2位十六进制数所代表的字符。如\x40表示'A'常用转义字符形式及功能第十九页,共七十三页,编辑于2023年,星期三二、字符变量:用来存放字符常量。

说明:.一个字符变量占一个字节.一个字符变量只能存放一个字符.字符变量的定义用char三、字符数据在内存中的存储形式及其使用方法1、字符常量与整型常量存储时都以ASCII码形式存放2、字符常量可以以整型常量形式输出,反之亦可3、字符常量可以赋值给整型变量,反之亦可第二十页,共七十三页,编辑于2023年,星期三例2:

main(){charc1,c2;/*定义两个字符型变量*/

c1=97;c2=98;/*分别给两个变量赋整型常量的值*/

printf(“%c%c”,c1,c2);/*以字符格式输出两个字符型数据*/}输出:

ab第二十一页,共七十三页,编辑于2023年,星期三例3:main(){charc1,c2;/*定义两个字符型变量*/c1=‘a’;c2=‘b’;/*赋字符型常量*/c1=c1-32;c2=c2-32;/*分别减去32*/

printf(“%c%c”,c1,c2);/*输出两个字符型数据*/}输出:AB第二十二页,共七十三页,编辑于2023年,星期三四、字符串常量:1、概念:由一对双撇号括起来的零个或多个字符序列

如:“hello”、“programming”、“A”等。2、说明:•双撇号是界定符,不属于字符串内容•“”表示一个空字符串,在内存中占一个字节•“”表示一个空格字符串,在内存中占2个字节•“A”表示一个字符串,‘A’表示一个字符第二十三页,共七十三页,编辑于2023年,星期三3、字符串常量与字符常量的区别:•一个字符常量可以赋值给一个字符变量,而字符串不可以•二者界定符不同•二者的存储方式不同:存储字符串时,在其末尾加一个‘\0‘作为结束标志,但不输出。即存储字符串时,比字符串中所有字符个数加起来多一个。•“\0”的含义是“空操作”,不产生任何作用,只起标志作用•无字符串变量,但可用字符型数组进行存储第二十四页,共七十三页,编辑于2023年,星期三一、赋值:向变量所代表的存储单元传送数据的操作,用“=”表示二、赋值的一般形式:变量=表达式;三、可以先定义变量,后赋值;也可以在定义变量时直接赋值四、对几个变量同时赋值:1、inta,b,c=5;2、inta=3,b=3,c=3;3、inta;a=3;4、inta,b,c;c=5;§3.6变量赋初值第二十五页,共七十三页,编辑于2023年,星期三§3.7各类型数值数据间的混合运算一、转换原因:不同类型之间进行运算,必须先转换为同一类型二、转换的类型:实型、整型、字符型三、转换规则:doublefloatlongunsignedintchar,short1、按“向高看齐”的原则,将“较低”的类型进行提升2、所有char或short型全部自动转换为int型3、所有float型转换成double型图形注解:纵向箭头表示转换方向

横向箭头表示必然转换第二十六页,共七十三页,编辑于2023年,星期三注意:箭头方向只表示数据类型由低向高转换,不要理解为int型先转换成unsigned型,再转换成long型,最后转换成double型。第二十七页,共七十三页,编辑于2023年,星期三§3.8算术运算符和算术表达式(一)按功能划分:1、算术运算符:+、-、*、/、%2、关系运算符:>、<、==、>=、<=、!=3、逻辑运算符:!、&&、||4、位运算符:<<、>>、~、^、|、&5、赋值运算符:=、+=、-=、*=、/=6、条件运算符:?,:7、逗号运算符:,8、指针运算符:*、&9、求字节数运算符:sizeof10、强制类型转换运算符:(类型名)11、分量运算符:·12、下标运算符:[]13、其它:函数运算符一、C运算符分类第二十八页,共七十三页,编辑于2023年,星期三(二)按所需操作数个数划分1、单目运算符

2、双目运算符

3、三目运算符第二十九页,共七十三页,编辑于2023年,星期三二、算术运算符和算术表达式1、基本的算术运算符:+、-、*、/、%(1)关于除法运算符/C语言规定:两个整数相除,其商为整数,小数部分被舍弃。例如,5/2=2。-5/3=-1(余-2),TurboC取结果用“向零取整”的方法;(2)关于求余数运算%要求两侧的操作数均为整型数据,否则出错。第三十页,共七十三页,编辑于2023年,星期三2.表达式和算术表达式(1)表达式的概念用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合C语言语法规则的式子,称为表达式。单个常量、变量或函数,可以看作是表达式的一种特例。将单个常量、变量或函数构成的表达式称为简单表达式,其它表达式称之为复杂表达式。(2)算术表达式的概念表达式中的运算符都是算术运算符。例如,3+6*9、(x+y)/2-1等,都是算术表达式。良好的源程序书写习惯:在表达式中,在双目运算符的左右两侧各加一个空格,可增强程序的可读性。请比较表达式“(x+y)/2–1”与“(x+y)/2–1”,您认为哪个的可读性更好一些?第三十一页,共七十三页,编辑于2023年,星期三3.运算符的优先级与结合性(1)C语言规定了运算符的优先级和结合性。所谓结合性是指,当一个操作数两侧的运算符具有相同的优先级时,该操作数是先与左边的运算符结合,还是先与右边的运算符结合。

自左至右的结合方向,称为左结合性。反之,称为右结合性。结合性是C语言的独有概念。除单目运算符、赋值运算符和条件运算符是右结合性外,其它运算符都是左结合性。第三十二页,共七十三页,编辑于2023年,星期三(2)表达式求值1)按运算符的优先级高低次序执行。例如,先乘除后加减。2)如果在一个运算对象(或称操作数)两侧的运算符的优先级相同,则按C语言规定的结合方向(结合性)进行。例如:算术运算符的结合方向是“自左至右”,即:在执行“a–b+c”时,变量b先与减号结合,执行“a-b”;然后再执行加c的运算。第三十三页,共七十三页,编辑于2023年,星期三4、强制类型转换运算符强制类型转换的规则:(1)一般形式:(类型名)(表达式)如:(int)a;(float)(x+y);(double)(4%3);(2)注意:表达式应用括号括起来。强制类型转换时,得到一个所需类型的中间变量,原来变量的类型不发生变化。第三十四页,共七十三页,编辑于2023年,星期三例:(int)x+y:将x转换成整型数据后与y相加(int)(x+y):将x+y的值转换成整型区别:(int)x与int(x)、(int)(x)例:已知x为一个实型变量,经过强制类型转换(int)x后,x的数据类型是怎样的。

进行强制类型转换,只是生成一个int型的中间变量,而x原来的类型并没改变。所以x仍是实型数据;第三十五页,共七十三页,编辑于2023年,星期三例4:

main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}运行结果如下:x=3.600000,i=3第三十六页,共七十三页,编辑于2023年,星期三5、自增(++)、自减(--)运算

1)作用

自增运算使单个变量的值增1,自减运算使单个变量的值减1。

2)用法与运算规则

自增、自减运算符都有两种用法:

(1)前置运算──运算符放在变量之前:++变量、--变量

先使变量的值增(或减)1,然后再以变化后的值参与其它运算,即先增减、后运算。

(2)后置运算──运算符放在变量之后:变量++、变量--

变量先参与其它运算,然后再使变量的值增(或减)1,即先运算、后增减。第三十七页,共七十三页,编辑于2023年,星期三[例5]自增、自减运算符的用法与运算规则示例。/*程序功能:自增、自减运算符的用法与运算规则示例*/main(){intx=6,y;printf("x=%d\n",x); /*输出x的初值*/

y=++x; /*前置运算*/

printf("y=++x:x=%d,y=%d\n",x,y);y=x--; /*后置运算*/

printf("y=x--:x=%d,y=%d\n",x,y);}程序运行结果:x=6y=++x:x=7,y=7y=x--:x=6,y=7 第三十八页,共七十三页,编辑于2023年,星期三3.说明(1)自增、自减运算,常用于循环语句中,使循环控制变量加(或减)1,以及指针变量中,使指针指向下(或上)一个地址。(2)自增、自减运算符,不能用于常量和表达式。例如,5++、--(a+b)等都是非法的。第三十九页,共七十三页,编辑于2023年,星期三(3)在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。如:i=3;k=(i++)+(i++)+(i++)k值等于9。

k=(++i)+(++i)+(++i)k值等于18。(4)出现多个运算符时,编译器在处理时尽可能多的(从左到右)将若干个字符组合成一个运算符。

如:i+++j;(i++)+ji+(++j)(5)TurboC中,调用函数时,实际参数的处理顺序是从右到左。

如:i=3;printf("%d,%d",i,i++);输出结果:4,3第四十页,共七十三页,编辑于2023年,星期三6、正、负号运算符1)一元运算符;2)结合方向是自右向左的3)优先级和自增、自减相同,高于*、/运算符4)相当于一次算术运算例:-a*b=(-a)*b-a=0-a第四十一页,共七十三页,编辑于2023年,星期三§3.9赋值运算符和赋值表达式一、赋值运算符:=

作用:将一个表达式的值赋给变量。

赋值运算符的一般形式为:变量=赋值表达式

例如:x=5

y=(float)5/2

如果表达式值的类型,与被赋值变量的类型不一致,但都是数值型或字符型时,系统自动地将表达式的值转换成被赋值变量的数据类型,然后再赋值给变量。

思考:假设变量num的数据类型为float,其值为2.5,则执行“num=(int)num”后,num的值等于多少?第四十二页,共七十三页,编辑于2023年,星期三左(变量)右(表达式)结果intfloat、double舍弃小数(截断)

float、double

int

值不变

int(2字节)

unsignedchar赋给int的低8位,

高8位补0

signedchar赋给int的低8位,高8位补符号charint、short、long取低8位longint

int符号扩展intlongint截断(取低16位)longint

unsignedint

高位补0二、赋值时的类型转换当赋值运算符两侧的类型不同时,在赋值前要进行类型转换。转换规则如下表:第四十三页,共七十三页,编辑于2023年,星期三三、复合赋值运算复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的。复合赋值运算的一般格式为:

变量双目运算符=表达式

└──┬──┘

复合赋值运算符它等价于:变量=变量双目运算符(表达式)。当表达式为简单表达式时,表达式外的一对圆括号才可缺省,否则可能出错。第四十四页,共七十三页,编辑于2023年,星期三例如:x+=3 /*等价于x=x+3*/y*=x+6 /*等价于y=y*(x+6),而不是y=y*x+6*/C语言规定的10种复合赋值运算符如下:+=,-=,*=,/=,%=; /*复合算术运算符(5个)*/&=,^=,|=,<<=,>>=; /*复合位运算符(5个)*/第四十五页,共七十三页,编辑于2023年,星期三四、赋值表达式一般形式:<变量><赋值运算符><表达式>例:

赋值表达式:

a=5

赋值语句:

a=5;

赋值表达式中的“表达式”也可以是赋值表达式。请计算下列表达式中各变量的值:(1)a=(b=5)(2)a=b=5(3)a=5+(c=6)(4)a=(b=4)+(c=6)(5)a=(b=10)/(c=2)(6)a+=a-=a*a(设a=5)第四十六页,共七十三页,编辑于2023年,星期三§3.10逗号运算符和逗号表达式一、一般形式:表达式1,表达式2,……表达式n二、求解过程:按顺序求解。三、表达式的值:最后一个表达式的值四、优先级:最低五、不是所有的逗号都是逗号运算符第四十七页,共七十三页,编辑于2023年,星期三例:(1)a=5+4,6*a(2)(a=5+4,6*a),a-2(3)b=(a=4,a*5)(4)b=a=4,5*a答案:(1)a=9,54(2)a=9,7(3)a=4,b=20(4)a=4,b=4,20第四十八页,共七十三页,编辑于2023年,星期三区别1:(逗号运算符在所有运算符中优先级最低)

x=(a=3,6*3)/*赋值表达式*/

x=a=3,6*a/*逗号表达式*/区别2:(逗号可以作运算符,也可以作分隔符)

printf("%d,%d,%d",a,b,c);/*逗号做分隔符*/

printf("%d,%d,%d",(a,b,c),b,c);/*(a,b,c)中的逗号是运算符,其余逗号是分隔符*/

第四十九页,共七十三页,编辑于2023年,星期三课后作业(P66):必做题:2、3、5、6、8、9、10、12选做题:4、11第五十页,共七十三页,编辑于2023年,星期三§5.1关系运算符及其表达式

关系运算:比较运算,用“关系表达式”进行运算。它取两个值:"真"(true)和"假"(false)。一、关系运算符及其优先次序1.C语言有六种关系运算符:<小于优先级相同(高)<=小于或等于>大于>=大于或等于==等于!=不等于

(低)注意:在C语言中,“等于”关系运算符是双等号“==”,而不是单等号“=”(赋值运算符)。第五十一页,共七十三页,编辑于2023年,星期三2.优先级(1)在关系运算符中,前4个优先级相同,后2个也相同,且前4个高于后2个。(2)与其它种类运算符的优先级关系关系运算符的优先级,低于算术运算符,但高于赋值运算符。第五十二页,共七十三页,编辑于2023年,星期三二、关系表达式1.关系表达式的概念所谓关系表达式是指,用关系运算符将两个表达式连接起来,进行关系运算的式子。例如,下面的关系表达式都是合法的:

a>b,a+b>c-d,(a=3)<=(b=5),'a'>='b',(a>b)==(b>c)2.关系表达式的值——逻辑值(非“真”即“假”)。由于C语言没有逻辑型数据,所以用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。第五十三页,共七十三页,编辑于2023年,星期三例如,假设num1=3,num2=4,num3=5,则:(1)num1>num2的值=0。(2)(num1>num2)!=num3的值=1。(3)num1<num2<num3的值=1。

思考:任意改变num1或num2的值,会影响整个表达式的值吗?为什么?(4)(num1<num2)+num3的值=6,因为num1<num2的值=1,1+5=6。

再次强调:C语言用整数“1”表示“逻辑真”,用整数“0”表示“逻辑假”。所以,关系表达式的值,还可以参与其它种类的运算,例如算术运算、逻辑运算等。第五十四页,共七十三页,编辑于2023年,星期三§5.2逻辑运算及其表达式

关系表达式只能描述单一条件,例如“x>=0”。如果需要描述“x>=0”、同时“x<10”,就要借助于逻辑表达式了。

一、逻辑运算符及其优先次序1.逻辑运算符及其运算规则(1)C语言提供三种逻辑运算符:&& 逻辑与(相当于“同时”)|| 逻辑或(相当于“或者”)! 逻辑非(相当于“否定”)第五十五页,共七十三页,编辑于2023年,星期三例如,下面的表达式都是逻辑表达式:

(x>=0)&&(x<10)、(x<1)||(x>5)、!(x==0)、 (year%4==0)&&(year%100!=0)||(year%400==0)(2)运算规则1)&&:当且仅当两个运算量的值都为“真”时,运算结果为“真”,否则为“假”。2)||:当且仅当两个运算量的值都为“假”时,运算结果为“假”,否则为“真”。3)!:当运算量的值为“真”时,运算结果为“假”;当运算量的值为“假”时,运算结果为“真”。例如,假定x=5,则(x>=0)&&(x<10)的值为“真”,(x<-1)||(x>5)的值为“假”。第五十六页,共七十三页,编辑于2023年,星期三2.逻辑运算符的运算优先级(1)逻辑非的优先级最高,逻辑与次之,逻辑或最低,即:!(非)→&&(与)→||(或)(2)与其它种类运算符的优先关系!→算术运算→关系运算→&&→||→赋值运算第五十七页,共七十三页,编辑于2023年,星期三二、逻辑表达式1.逻辑表达式的概念所谓逻辑表达式是指,用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。在C语言中,用逻辑表达式表示多个条件的组合。例如,(year%4==0)&&(year%100!=0)||(year%400==0)就是一个判断一个年份是否是闰年的逻辑表达式。

逻辑表达式的值也是一个逻辑值(非“真”即“假”)。第五十八页,共七十三页,编辑于2023年,星期三2.逻辑量的真假判定──0和非0C语言用整数“1”表示“逻辑真”、用“0”表示“逻辑假”。但在判断一个数据的“真”或“假”时,却以0和非0为根据:如果为0,则判定为“逻辑假”;如果为非0,则判定为“逻辑真”。例如,假设num=12,则:!num的值=0,num>=1&&num<=31的值=1,num||num>31的值=1。第五十九页,共七十三页,编辑于2023年,星期三3.说明(1)逻辑运算符两侧的操作数,除可以是0和非0的整数外,也可以是其它任何类型的数据,如实型、字符型等。(2)在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式(即并不是所有的表达式都被求解)。换句话说:1)对于逻辑与运算,如果第一个操作数被判定为“假”,系统不再判定或求解第二操作数。2)对于逻辑或运算,如果第一个操作数被判定为“真”,系统不再判定或求解第二操作数。例如:假设n1、n2、n3、n4、x、y的值分别为1、2、3、4、1、1,则求解表达式“(x=n1>n2)&&(y=n3>n4)”后,x的值变为0,而y的值不变,仍等于1。第六十页,共七十三页,编辑于2023年,星期三课后作业(P111):

2、3第六十一页,共七十三页,编辑于2023年,星期三§12.1位运算符及位运算1.按位与──&

(1)格式:x&y

(2)规则:对应位均为1时才为1,否则为0。例如,3&9=1:0011&1001 0001=(1)10

(3)主要用途:①清零。如5&0=0②取(或保留)一个数的某(些)指定位。构造一个数与之按位与,将要取的位置1,其余位置0。第六十二页,共七十三页,编辑于2023年,星期三2.按位或──|

(1)格式:x|y

(2)规则:对应位均为0时才为0,否则为1。例如,3|9=11:0011 |10011011=(11)10

(3)主要用途:

将一个数的某(些)位置1,其余各位不变。构造一个数与之按位或,将要置1的位置1,其余位置0。第六十三页,共七十三页,编辑于2023年,星期三3.按位异或──^(1)格式:x^y(2)规则:对应位相同时为0,不同时为1:如:3^9=10。(3)主要用途:①使1个数的某(些)位翻转(即原来为1的位变为0,为0的变为1),其余各位不变。可构造一个数与之按位异或,将要翻转的位置1,不翻转的位为0。②与0相异或,保留原值。③交换两个数的值,不用临时变量。如:

a=a^b;b=b^a;a=a^b;第六十四页,共七十三页,编辑于2023年,星期三4.按位取反(单目运算符)──~(1)格式:~x(2)规则:各位翻转,即原来为1的位变成0,原来为0的位变成1(3)主要用途:间接地构造一个数,以增强程序的可移植性。如:要构造一个全1的数,可用~0表示。第六十五页,共七十三页,编辑于2023年,星期三5.按位左移──<<(1)格式:x<<位数(2)规则:使操作数的各位左移,低位补0,高位溢出。如:5<<2=20。(3)结论:

某数左移1位相当于该数乘以2,左移n位相当

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论