收藏 分销(赏)

课件——二进制···.ppt

上传人:xrp****65 文档编号:14026893 上传时间:2026-06-09 格式:PPT 页数:75 大小:1.99MB 下载积分:10 金币
下载 相关
课件——二进制···.ppt_第1页
第1页 / 共75页
课件——二进制···.ppt_第2页
第2页 / 共75页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,3,章 数据类型、运算符与表达式,第,3,章 数据类型、运算符与表达式,计算机中数的表示,C,语言的基本数据类型,常量和变量,数据类型转换,运算符与表达式,3.0,计算机中数的表示方法,1.,十进制:,0,9,十个数字组成,逢十进一,2.,二,进制:,0,1,二个数字组成,逢二进一,3.,八进制:,0,7,八个数字组成,逢八进一,4.,十六进制:,0,9,、,A,F,十六个数字组成,逢十六进一,计算机中数的表示及进制转换,数码、基与权,-,数码:表示数的符号,-,基:数码的个数,-,权:每一位所具有的值,数制,3.0,计算机中数的表示方法,十进制 二进制 八进制 十六进制数,0 0 0 0,1 1 1 1,2 10 2 2,3 11 3 3,4 100 4 4,5 101 5 5,6 110 6 6,7 111 7 7,8 1000 10 8,9 1001 11 9,10 1010 12 A,11 1011 13 B,12 1100 14 C,13 1101 15 D,14 1110 16 E,15 1111 17 F,=1,2,4,0,2,3,1,2,2,02,1,1,2,0,1,2,-1,1,2,-2,=16+0 +4+0 +1+0.5+0.25,=,(21.75),10,(10101.11),2,(351),8,=3,8,2,58,1,18,0,=192+40 +1,=,(233),10,(121),16,=1,16,2,216,1,116,0,=256+32 +1,=,(289),10,各种进制之间的转换,二进制、八进制、十六进制转换成十进制,-,方法:按权相加,各种进制之间的转换,(,整数,),二进制、八进制、十六进制转换成十进制,方法:按权相加,十进制转换成二进制、八进制、十六进制,方法:连续除以基,从低到高记录余数,直至商为,0,例 把十进制数,59,转换成二进制数,59,2,29,2,14,2,7,2,3,2,1,2,0,(59),10,=(111011),2,1,1,0,1,1,1,1 1 1 0 1 1,余,余,余,余,余,余,例 把十进制数,159,转换成八进制数,159,8,19,8,2,8,0,(159),10,=(237),8,2 3 7,余,7,余,3,余,2,例 把十进制数,459,转换成十六进制数,459,16,28,16,1,16,0,(459),10,=(1CB),16,1 C B,余,11,余,12,余,1,二进制与八进制之间的转换,二进制转换成八进制:从右向左,每,3,位一组(不足,3,位左补,0,),转换成八进制,八进制转换成二进制:用,3,位二进制数代替每一位八进制数,例,(1101001),2,=(,00,1,101,001),2,=(151),8,例,(246),8,=(,0,10,100,110),2,=(10100110),2,000 0,001 1,010 2,011 3,100 4,101 5,110 6,111 7,二进制与十六进制之间的转换,二进制转换成十六进制:从右向左,每,4,位一组(不足,4,位左补,0,),转换成十六进制,十六进制转换成二进制:用,4,位二进制数代替每一位十六进制数,0000 0,0001 1,0010 2,0011 3,0100 4,0101 5,0110 6,0111 7,1000 8,1001 9,1010 A,1011 B,1100 C,1101 D,1110 E,1111 F,例,(11010101111101)2=(,00,11,0101,0111,1101)2=(357D)16,例,(4B9E)16=(,0,100,1011,1001,1110)2=(100101110011110)2,bit,和,Byte,bit,数位 用,b,表示,Byte,字节 用,B,表示,1 Byte =8 bit,1,1,0,1,1,0,0,1,1,1,0,0,0,1,0,1,1bit,1 Byte,数值的表示方法,原码、反码和补码,原码:最高位为符号位,其余各位为数值本,身的绝对值,反码:,正数:反码与原码相同,负数:符号位为,1,,其余位对原码取反,补码:,正数:原码、反码、补码相同,负数:最高位为,1,,其余位为原码取反,,再对整个数加,1,原码,反码,补码,+7,00000111,00000111,00000111,-7,1,0000111,1,1111000,1,1111001,+0,00000000,00000000,00000000,-0,10000000,11111111,00000000,数的范围,01111111,11111111,(-127+127),01111111,10000000,(-127+127),01111111,10000000,(-128+127),(用一字节表示数),负数补码转换成十进制数:最高位不动,其余位取反十进制再减,1,例 补码:,11111001,取反:,10000110=-6,值再减,1,:,-6-1=-7,3.1,C,语言的数据类型,C,数,据,类,型,基本类型,派生类型,指针类型,字符型,char,整型,实型,单精度型,float,双精度型,double,数组,结构体,struct,共用体,union,短整型,short,长整型,long,布尔型,bool,枚举类型,enum,空类型,void,双长整型,long,long,基本整型,int,函数类型,复数浮点型,数据类型决定:,1.,数据占内存字节数,2.,数据取值范围,3.,其上可进行的操作,基本数据类型,类型,符号,关键字,数的表示范围,所占位数,整型,字符型,实型,有,无,(,signed),int,16,-32768 32767,(,signed),short,16,-32768 32767,(,signed),long,32,-2147483648 2147483647,16,unsigned,int,0 65535,32,0 4294967295,unsigned,long,unsigned,short,16,0 65535,有,float,32,-3.4e,38,3.4e,38,有,double,64,-1.7e,308,1.7e,308,有,char,8,-128 127,无,unsigned char,8,0 255,有,long double,128,-,1.2e,4932,1.2e,4932,VC6.0,基本数据类型,如,#define PRICE 30,常量,定义:程序运行时其值不能改变的量(即常数),分类,:,符号常量,:,用标识符代表常量,定义格式:,#define,符号常量 常量,#define PRICE 30,main(),int,num,total,;,num=10;,total=num*PRICE;,printf(total,=%,d,total,);,运行结果:,total=300,3.2,常量和变量,使用符号常量好处,:,含义清楚,需要改变一个常量时可以做到,“,一改全改,”,直接常量,:,整型常量,实型常量,字符常量,字符串常量,变量,概念:其值可以改变的量,变量名,与,变量值,变量定义的一般格式:,数据类型,变量,1,,变量,2,,,,变量,n;,决定分配字节数,和数的表示范围,合法标识符,例,:,int,a,b,c,;,float data;,标识符就是一个名字,用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。,组成:由,字母、数字,和,下划线,三种字符组成,且,第一个字符,必须为字母或下划线。,什么是标识符?,合法标识符举例,sum,class,li_lei,_total,_31day,不合法标识符举例,Dr.Li,#123,5D2,ab,$10,注:标识符区分大小写;变量名一般用小写字母表示;应做到,“,见名知义,”,。,数据类型,变量,1,,变量,2,,,,变量,n;,int,a=1,b,-3,c;,float data=3.67;,char,ch,=A;,int,x=1,y=1,z=1;,int,x=y=z=1;,变量,变量初始化,:,定义时赋初值,变量定义的一般格式:,编译程序根据变量定义为其,分配指定字节的内存单元,.,地址,a,b,c,2,字节,2,字节,2,字节,地址,地址,.,内存,1,-3,随机数,变量的使用:,先定义,后使用,变量定义位置:一般放在函数开头,例,1,int,student;,stadent,=19;,/*Undefined symbol,stadent,in function main,*/,例,2,float,a,b,c,;,c=,a%b,;,/*,Ilegal,use of floating point in function main,*/,变量,main(),int,a,b,=2;,float data;,a=1;,data=(,a+b,)*1.2;,printf(“data,=%,fn”,data,);,变量定义,可执行语句,常变量,常变量定义的一般格式:,const,数据类型,变量,=,常量,;,const float pi=3.1415926,;,/,定义常变量,#define PI 3.1415926,/,定义符号常量,3.3,整型数据,整型常量(整常数),三种形式:,十进制整数:由数字,09,和正负号表示,.,如,12,-345,0,八进制整数:由数字,0,开头,后跟数字,07,表示,.,如,0123,011,十六进制整数:由,0 x,开头,后跟,09,af,AF,表示,.,如,0 x123,0Xff,整型常量的类型,在常量后面加字母,u,或,U,,认为其是,unsinged,int,型,在,整常量后加字母,l,或,L,,,认为它是,long,int,型常量,3.3,整型数据,整型变量,整型数据在内存中存放形式:,实际上,在计算机中数值是以,补码,表示的。一个,正数的补码,和其原码相同,,负数的补码,为其绝对值的二进制形式,按位取反再加,1,。,i 10,0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0,j -10,1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0,整型变量,整型变量的定义,main(),int,a,b,c,d,;,unsigned,int,u;,a=12;b=-24;u=10;,c=,a+u;d,=,b+u,;,printf(,“,a+u,=%,d,b+u,=%,dn,”,c,d,);,运行结果:,a+u,=22,,,b+u,=-14,3.3,整型数据,main(),int,a,b,;,a=32767;,b=a+1;,printf,(,%,d,%d,a,b,);,运行结果:,32767,,,32768,整型数据的溢出,符号位,0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,32767,符号位,1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,-32768,改过:,main(),long,int,a,b,;,a=32767;,b=a+1;,printf,(,%,ld,%,ld,a,b,);,实型常量(实数或浮点数),表示形式:,十进制小数形式:(必须有小数点)如,0.123,.123,123.0,0.0,123.,指数形式:(,e,或,E,之前必须有数字;指数必须为整数)如12.3,e3,123E2,1.23e4,e-5,1.2E-3.5,实型常量的类型,默认,double,型,在,实型常量后加字母,f,或,F,,,认为是,float,型,3.4,实型数据,实型变量,实型数据在内存中存放形式:,按指数形式存在,占,4,个字节,如:,float x;,x=3.14159;,x,.314159,+,1,数符 小数部分 指数,+.314159,10,3.14159,1,+,3.4,实型数据,3.4,实型数据,实型变量的分类:,类型,符号,关键字,数的表示范围,所占位数,实型,有,float,32,-3.4e,38,3.4e,38,有,double,64,-1.7e,308,1.7e,308,有,long double,128,-1.2e,4932,1.2e,4932,实型变量的分类:,3.4,实型数据,实型数据的舍入误差:,main(),float a,b;,a=123456.789e5;,b=a+20;,printf(,a,=%f,b=%,fn,a,b);,运行结果:,a=12345678848.000000,b=12345678848.000000,注:单精度变量有,7,位,有效数字,双精度变量有,16,位,有效数字,3.4,实型数据,实型数据的舍入误差:,main(),float a,b;,a=1234.56789e5;,b=a+20;,printf(,a,=%f,b=%,fn,a,b);,运行结果:,a=123456792.000000,b=123456816.000000,32,字符常量,定义,:,用,单引号,括起来的,单个普通字符,或,转义字符,.,3.5,字符数据,如 ,a A?n,101,转义字符,:,反斜线后面跟一个字符或一个代码值表示,将,后面的字符转换成另外的意义。,常用转义字符及其含义:,=!=,逻辑运算符:!,&|,位运算符 :,|&,赋值运算符:,=,及其扩展,条件运算符:,?:,逗号运算符:,指针运算符:*,&,求字节数 :,sizeof,强制类型转换:(类型),分量运算符:,.-,下标运算符:,其它 :,(),3.8,算术运算符和算术表达式,运算符基本概念,:,运算符两端常量或者变量称为,操作数,按照运算符所对应的操作数的个数可将运算符分为三种:,单目运算符,双目运算符,三目运算符,由操作数运算符及圆括号按照一定规则构成的式子称为,表达式,学习运算符应注意:,运算符功能,与操作数关系,要求操作数个数,(运算符为几目的),要求操作数类型,运算符优先级别,结合方向,结果的类型,基本算术运算符:,+-*/%,优先级:,*,/%,-,+,-,结合方向:自左向右,说明:,“,-,”,可为,单目,运算符时,右结合性,两整数相除,结果为整数,%要求两侧均为整型数据,例,5/2 =,-5/2.0 =,例,5%2 =,-5%2 =,1%10 =,5%1 =,5.5%2 =,例,5/2 =,2,-5/2.0=,-2.5,例,5%2 =1,-5%2 =-1,1%10 =1,5%1 =0,5.5%2 =,(,),自增、自减运算符,+-,作用:使变量值加,1,或减,1,前置,+i,-i (,先执行,i,+1,或,i-1,再使用,i,值,),后置,i+,i-(,先使用,i,值,再执行,i,+1,或,i-1,),例,j=3;k=+j;,j=3;k=j+;,j=3;,printf(“%d”,+j,);,j=3;,printf(“%d”,j,+);,a=3;b=5;c=(+a)*b;,a=3;b=5;c=(a+)*b;,/*k=4,j=4*/,/*k=3,j=4*/,/*4*/,/*3*/,/*c=20,a=4*/,/*c=15,a=4*/,/*+,-,运算练习小程序*,/,main(),int,a=1,b=1;,printf(“+a,=%,d,b,+=%,dn”,+a,b,+);,printf(“a,=%,d,b,=%,dn”,a,b,);,printf,(“-a=%,d,b,-=%,dn”,-a,b,-);,printf(“a,=%,d,b,=%,dn”,a,b,);,+a=2,b+=1,a=2,b=2,-a=1,b-=2,a=1,b=1,说明:,+-不能用于常量和表达式,如,5+,(,a+b,)+,+-,结合方向:,自右向左,自增、自减运算符,+-,例:,printf(,“,%d,”,-i,+);,说明:,i,初值为,3,,,(,i+)+(i+)+(i,+)=,?,i+j,?,C,编译系统尽可能多的按照,自左向右,将若干个字符组成一个运算符,i+j,等价于,(,i+)+j,i,的初值为,3,printf,(,“,%d,,,%d,”,,,i,,,i+,);,printf,(,“,%d,,,%d,”,,,i,,,+i,);,printf,(,“,%d,,,%d,”,,,+i,,,i,);,自增、自减运算符,+-,3,3,4,4,4,3,+-,-,*/%,+-,低,高,算术运算符优先顺序,简单赋值运算符,符号:,=,格式:,变量标识符,=,表达式,作用:将一个数据(常量或表达式)赋给一个变量,例,a=3;,d=,func,();,c=d+2;,3.9,赋值运算符和表达式,说明,:,结合方向:,自右向左,优先级,:,较低,左侧必须是,变量,,不能是常量或表达式,赋值转换规则,:,使赋值号右边表达式值,自动,转换成其左边变量的类型(隐式转换),例,3=x-2*y;,a+b,=3;,例,float f;,int,i;,i=10;,f=i;,则,f=10.000000,例,int,i;,i=2.56;,/*,结果,i=2*/,二、赋值运算时的类型转换:,1.,实型赋给整型:小数舍弃,2.,整型赋给实型:值不变,以浮点数存储,3.double,赋给,float,:截取前,7,位有效数字,4.float,赋给,double,:值不变,有效位增加(补,0,),5.,字符型赋给整型:字符数据放入整型变量低,8,位,1,)字符为无符号类型:高,8,位补,0,2,)字符为有符号类型:符号扩展,字符高位为,0,,高,8,位补,0,字符高位为,1,,高,8,位补,1,6.,int,型赋给,long,型:,int,型数据放入,long,型变量低,16,位,高,16,位进行符号扩展,int,型数据为正值,高位为,0,,,long,高,16,位补,0,int,型数据为负值,高位为,1,,,long,高,16,位补,1,7.,整型(,int,short,long),赋给字符型:,截取整型低,8,位放入字符变量,8.,长整型,long,赋给,int,整型:,截取整型低,16,位放入,int,变量,9.,无符号整型赋给长整型,long,:,高位补,0,10.,无符号整型赋给相同字节的整型:,11.,有符号整型赋给相同字节的无符号整型:,各位内容原样复制,3.9,赋值运算符和赋值表达式,长给短,直接截取,短给长,前面补位,例,:a=b=c=5,a=(b=5),a=5+(c=6),a=(b=4)+(c=6),a=(b=10)/(c=2),/*,表达式值为5,,a,b,c,值为5,*/,/*b=5;a=5*/,/*,表达式值11,,c=6,a=11*/,/*,表达式值10,,a=10,b=4,c=6*/,/*,表达式值5,,a=5,b=10,c=2*/,赋值表达式的值与变量值相等,且可嵌套,说明,:,复合赋值运算符,种类:,+=-=*=/=%=,=&=|=,a+=3,a=a+3,x*=y+8,x=x*(y+8),x%=3,x=x%3,含义:,=,=,3.9,赋值运算符和表达式,思考题,1,、,a=12;,a+=a-=a*a,2,、,int,a=2;,a%=4-1;,a+=a*=a-=a*=3;,求,a,的值?,逗号运算符和表达式,形式:,表达式,1,表达式,2,表达式,n,结合性,:,从左向右,优先级,:,低(低于赋值号的优先级),逗号表达式,的值:顺序求解,但最后逗号表达式的,值,等于,表达式,n,的值,用途:,常用于循环,for,语句中,例,:,3+5,6+8,例,:,a=3*5,a*4,练习题,选择题,:,下面符合,C,语言语法的赋值表达式是,(),。,A)d=9+e+f=d+9B)d=9+e,f=d+9,C)d=(9+e,e+,d+9)D)d=9+e+=d+7,例,a=3,;,a=3*5,a*4,a=3*5,a*4,a+5,例,x=(a=3,6*3),x=a=3,6*a,例,a=1;b=2;c=3;,printf(“%d,%d,%d”,a,b,c,);,printf(“%d,%d,%d”,(a,b,c),b,c,);,/*a=15,表达式值60,*/,/*a=15,表达式值20,*/,/*,赋值表达式,表达式值18,x=18*/,/*,逗号表达式,表达式值18,x=3*/,/*1,2,3*/,/*3,2,3*/,例,:,#include,main(),int,x,y,=7;,float z=4;,x=(y=y+6,y/z);,printf(x,=%,dn,x,);,运行结果:,x=3,程序中应尽量使用,括号,以明确求值的确切顺序,为自己和别人阅读带来方便。,+-,操作符的代码比等价赋值句代码的运行速度快的多,目标代码的效率也更高,但初学者要,慎用,。,提示:,本章要点,C,语言的标识符是如何定义的。,C,语言有哪些基本数据类型?,各种基本数据类型的常量和变量是如何定义的?,C,语言有几种类型的表达式?,各种类型表达式是如何求值的?,在,C,语言混合运算的表达式中,各种运算符的优先级和结合性。,第,3,章作业,作业,(1)x+a%3*(int)(x+y)%2/4,设,x=2.5,a=7,y=4.7,/*CH3.C*/,main(),float x=2.5,y=4.7;,int,a=7;,float result;,result=x+a%3*(int)(x+y)%2/4;,printf(,“,%fn,”,result,);,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服