第一章 C语言概述NEW_第1页
第一章 C语言概述NEW_第2页
第一章 C语言概述NEW_第3页
第一章 C语言概述NEW_第4页
第一章 C语言概述NEW_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

1、1高级语言程序设计高级语言程序设计2教师:教师: 胡胡 全全办公室:科研楼办公室:科研楼 B250E-mail:3教材、参考书n教材n C语言程序设计 第三版 陈文宇 黄迪明等 电子科技大学出版社n参考书 C程序设计 第三版 谭浩强编著 清华大学出版社C程序设计题解与上机指导 第三版 谭浩强 清华大学出版社C程序设计语言 第二版 徐宝文译 B.W.Kernighan & D.M.Rithie著,机械工业出版社课时及课程成绩组成n课时安排授课:24学时上机:40学时(第6周起)n平时30%+期中10%+期末考试60%5课程学习要求v 课前做好预习,鼓励自学。教师讲解难点和重点作为学习引导

2、。v 保持课堂安静,认真听课、积极思考。v 认真、独立、按时完成并提交作业。v 重视上机实践,有效利用上机时间。v 培养基本的编程能力,形成良好的编程风格。6n死的伟大的人,永远没有失败。n逆境是到达真理的一条道路。n拜伦的女儿ADA - 应用数学家 第一位软件工程师7ENIAC,1946n第一台通用电子计算机GUI个人计算机(PC)nXerox PARC - mid 1970snAltonBravo WYSIWYG text editor.nBravoX Microsoft Word prototype.nLaurel E-mail .nNeptune file managernPress

3、file printing manager.nSil .paintXerox Star- 1981n商业失败,但技术领先n384k hard diskn$15k costnClosed architecturenLacking key functionality1981 IBM PCn微型计算机-家庭计算机-个人计算机(PC)nIBM 个人计算机非常成功nIBM PC:Don Estridge,13人团队Apple Lisa - 1982nBased on ideas of StarnMore personality, not only office toolsnLisaWrite: word

4、nLisaCalc: excelnLisaGraph: graphnLisaList: Planning managernLisaProject: Project SchedulenLisaDraw: imagenLisaTerminal: communicationn商业失败Apple Macintosh - 1984非原创,smart copier价值点nAggressive pricing - $2500nFriendly GUInThird party componentsnHigh-qualifiedLaserWriter printernApplications:MacWrite、

5、MacDrawnNew apps:Pagemaker,Word, Excel数字化时代n通信领域:通信领域:n程控交换机取代模拟交换机程控交换机取代模拟交换机nGSM和和CDMA取代模拟移动通信系统取代模拟移动通信系统n图像领域:图像领域:n数字相机普及数字相机普及 胶卷行业和洗印业胶卷行业和洗印业n影像领域:影像领域:n数字摄像机取代胶片摄像机数字摄像机取代胶片摄像机n数字影像编辑数字影像编辑n数字观影设备取代胶片观影设备数字观影设备取代胶片观影设备n从根本上说,以计算机为中心的数字技术革命从根本上说,以计算机为中心的数字技术革命改变了社会各个领域的基本面貌,改变了我们改变了社会各个领域的基

6、本面貌,改变了我们的生活习惯以及思维习惯的生活习惯以及思维习惯雷达预警机X47B投掷JDAM弹药1920图像识别和处理222324第一章 C语言概述 C语言发展历史 C语言特点 C程序格式和结构特点 C程序上机步骤1.1 C语言发展历史251.1 C语言发展历史26存储器输入设备运算器控制器输出设备Von Neuman Architecture271.1 C语言发展历史n程序设计语言的发展机器语言汇编语言高级语言面向过程面向对象CPU指令系统,由0、1序列构成的指令码组成如:10000000 加 10010000 减用助记符号描述的指令系统如 ADD A, B面向机器的语言程序设计是数据被加工

7、的过程客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96AdaALGOL60ALGOL68PascalModula-2CPLBCPL BCC+JavaLISPPROLOGCOBOLFORTRAN77FORTRANPL/1Simula 67Smalltalk 80BASICANSI-BASICQBASIC VBFORTRAN90C语言发展过程 C C语言是国际上广泛流行的高级语言。语言是国际上广泛流行的高级语言。 C C语言是

8、在语言是在B B语言的基础上发展起来的。语言的基础上发展起来的。 B B(BCPLBCPL)语言是语言是19701970年由美国贝尔实验室设计年由美国贝尔实验室设计的的, , 并用于编写了第一个并用于编写了第一个UNIXUNIX操作系统操作系统, ,在在PDP PDP 7 7上实现。优点:精练上实现。优点:精练, ,接近硬件,缺点:过于接近硬件,缺点:过于简单简单, ,数据无类型。数据无类型。 19731973年贝尔实验室的年贝尔实验室的D.M.Ritchie D.M.Ritchie 在在B B语言的基语言的基础上设计出了础上设计出了C C语言,对语言,对B B取长补短,并用它改取长补短,并用

9、它改写了原来用汇编编写的写了原来用汇编编写的UNIX(UNIX(即即UNIXUNIX第第5 5版),版),但仅在贝尔实验室使用。但仅在贝尔实验室使用。 19751975年年UNIXUNIX第第6 6版发布版发布,C,C的优点引起关注。的优点引起关注。 19771977年出现了年出现了可移植可移植C C语言编译程序语言编译程序,推动,推动了了UNIXUNIX在各种机器上实现,在各种机器上实现,C C语言也得到推广,语言也得到推广,UNIXUNIX和和C C的发展相辅相成。的发展相辅相成。 19781978年年Brian W.KernighanBrian W.Kernighan和和Dennis M

10、.RitchieDennis M.Ritchie合著了影响深远的名著合著了影响深远的名著The C Programming The C Programming LanguageLanguage,被称为标准,被称为标准C C。 之后,之后,C C语言先后移植到大、中、小、微型计算语言先后移植到大、中、小、微型计算机上机上, ,已独立于已独立于UNIXUNIX和和PDPPDP,风靡世界,风靡世界, ,成为应用成为应用最广泛的几种计算机语言之一。最广泛的几种计算机语言之一。UNIX是我们的是我们的杰作,呵呵杰作,呵呵 !Brian W.Kernighan Ken Thompson 和和 Dennis

11、 Ritchie 我参加了我参加了UNIX、C、语言开发,也写书,语言开发,也写书,厉害吧,呵呵!厉害吧,呵呵! 19831983年年, ,美国国家标准化协会美国国家标准化协会(ANSI)(ANSI)根据根据C C语言语言各种版本对各种版本对C C的发展和扩充的发展和扩充, ,制定了新的标准制定了新的标准ANSI C ANSI C ,比标准,比标准C C有了更大的发展。有了更大的发展。 19881988年年K & RK & R按照按照 ANSI CANSI C修改了他们的修改了他们的The C The C Programming LanguageProgramming Lang

12、uage。 19891989年年,ANSI,ANSI公布了公布了ANSI X3.159-1989。 19901990年,国际标准化组织接受了年,国际标准化组织接受了ANSI CANSI C为为ISO C ISO C 的标准的标准( (ISO9899:1990) )。 19941994年,年,ISOISO又修订了又修订了C C语言标准。语言标准。 目前流行的目前流行的C C语言编译系统大多是以语言编译系统大多是以ANSI CANSI C为基础为基础进行开发的。进行开发的。 ISO/IEC 9899:1999,是,是19991999年出的年出的C C语言标准语言标准。 再加上再加上20012001

13、年和年和20042004年经过两次技术修正年经过两次技术修正 ISO/IEC ISO/IEC 9899:19999899:1999与两次技术修正被统称为与两次技术修正被统称为C99C99标准。标准。 20112011年年1212月月8 8日,日,ISOISO正式发布了新的正式发布了新的C C语言的新标语言的新标准准C11C11,之前被称为,之前被称为C1XC1X,官方名称为,官方名称为ISO/IEC ISO/IEC 9899:20119899:2011。 目前大多数的编译系统并没有完全的实现目前大多数的编译系统并没有完全的实现C11C11标准标准 不同版本的不同版本的C C编译系统所实现的编译

14、系统所实现的语言功能和语法规则略有差别,因此语言功能和语法规则略有差别,因此读者应了解所用的读者应了解所用的C C语言语言编译系统编译系统的的特点(可以参阅相关手册)。本课程特点(可以参阅相关手册)。本课程以以ANSI CANSI C为基础。为基础。vC+:包含了:包含了C的所有特性,增加了类和其他特的所有特性,增加了类和其他特性支持面向对象编程。性支持面向对象编程。vJava:基于:基于C+ ,但抛弃了其复杂和奇异性,增,但抛弃了其复杂和奇异性,增加了接口技术,纯面向对象编程语言。加了接口技术,纯面向对象编程语言。vC#:基于:基于C+ 和和Java发展起来的新语言。发展起来的新语言。vPe

15、rl:脚本语言,采用了:脚本语言,采用了C的许多特性,具有了的许多特性,具有了C的强大能力和灵活性。的强大能力和灵活性。C+C+是由于开发大型应用软件的需要而产是由于开发大型应用软件的需要而产生的,并不是所有的人都要去编写大型软件。生的,并不是所有的人都要去编写大型软件。面向对象的基础是面向过程。面向对象的基础是面向过程。C+C+是面向是面向对象的语言,对象的语言,C C是面向过程的,学起来比是面向过程的,学起来比C C语言语言困难得多,所以不太适合程序设计的初学者。困难得多,所以不太适合程序设计的初学者。既然有了面向对象的既然有了面向对象的C+C+语言,为语言,为什么还要学习什么还要学习C

16、C语言?语言?语言简洁、紧凑,使用方便、灵活。语言简洁、紧凑,使用方便、灵活。3232个关键字个关键字、9 9种控制语句种控制语句, ,程序形式自由程序形式自由运算符丰富。运算符丰富。3434种运算符种运算符 数据类型丰富,具有现代语言的各种数据结构。数据类型丰富,具有现代语言的各种数据结构。具有结构化的控制语句,是完全模块化和结构化具有结构化的控制语句,是完全模块化和结构化的语言。的语言。 语法限制不太严格语法限制不太严格, ,程序设计自由度大。程序设计自由度大。 允许直接访问物理地址允许直接访问物理地址, ,能进行位操作能进行位操作, ,能实现汇编能实现汇编语言的大部分功能语言的大部分功能

17、, ,可直接对硬件进行操作。兼有可直接对硬件进行操作。兼有高级高级和和低级低级语言的特点语言的特点 。目标代码质量高目标代码质量高, ,程序执行效率高。只比汇编程序程序执行效率高。只比汇编程序生成的目标代码效率低生成的目标代码效率低1010-20%-20%。程序可移植性好(与汇编语言比)。基本上不做修程序可移植性好(与汇编语言比)。基本上不做修改就能用于各种型号的计算机和各种操作系统。改就能用于各种型号的计算机和各种操作系统。具有标准库;功能强大具有标准库;功能强大容易隐藏错误容易隐藏错误可能难以理解可能难以理解大程序维护和修改较困难(与面向对象程序相比)大程序维护和修改较困难(与面向对象程序

18、相比)解决办法:解决办法: 利用库利用库 采用编码规范采用编码规范 紧贴标准紧贴标准 避免模糊和复杂代码避免模糊和复杂代码401.2 C语言特点n语言简洁、紧凑、灵活n运算符和数据类型丰富n程序设计结构化、模块化n允许直接访问物理地址 n生成目标代码质量高n可移植性好中级语言41auto break case char constcontinue default do double elseenum extern float for gotoif int long register returnshort signed sizeof static structswitch typedef un

19、signed union voidvolatile while32个关键字(42if( )elsefor( )while( )dowhile( )continuebreakswitchgotoreturn9种控制语句43算术运算符:+ - * / % + -关系运算符: = !=逻辑运算符:! & |位运算符 : | &赋值运算符:= 及其扩展条件运算符:?:逗号运算符:,指针运算符:* &求字节数 :sizeof强制类型转换:(类型)分量运算符:. -下标运算符:其它 :( ) -34种运算符44C数据类型基本类型构造类型指针类型空类型void定义类型typedef数

20、值类型字符类型char枚举类型enum整 型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体union451.3 C程序格式和结构特点/* example1.1 The first C Program*/#include main() printf(“Hello,World!”);注释编译预处理函数语句输出:Hello,World!例:第一个C程序 Hello,World!46/* example1.2 calculate the sum of a and b*/#include /* This is the main progr

21、am */main() int a,b,sum; a=10; b=24; sum=add(a,b); printf(”sum= %dn,sum);/* This function calculates the sum of x and y */int add(int x,int y) int z; z=x+y; return(z);运行结果:sum=34函数语句预处理命令注释47nC格式特点n习惯用小写字母,大小写敏感n不使用行号,无程序行概念n可使用空行和空格n常用锯齿形书写格式main( ) . . . . . . .main( ) int i , j , sum; sum=0; for(

22、i=1; i10;i+) for(j=1;jTC.exen主控菜单n文件操作FILE :New Load Save Write ton编辑操作EDIT:插入/修改 块 查找/替换n编译链接COMPILE LINK MAKEn执行RUNn退出Turbo CnAlt +xnAlt+F ,Qn帮助HelpnF1nCtrl+F152基本操作:F10-调用主菜单F2-存盘F3-打开Alt+F9-CompileCtrl+F9-RunAlt+F5-User ScreenTC常用热键文本编辑:-移动光标PgUp,PgDn-上下翻页Ctrl+PgUp,Ctrl+PgDn-文件首尾Home End Delete

23、Insert Backspace块操作:Ctrl+KB-块开始标记 Ctrl+KK-块结束标记Ctrl+KC-块拷贝 Ctrl+KV-块移动Ctrl+KY-块删除 Ctrl+KH-块隐藏程序调试:F8-Step over F7-Trace intoF4-Goto Cursor Ctrl+F7-Add WatchCtrl+F8-Toggle Breakpoint Ctrl+F2-Program Reset窗口操作:F5-窗口缩放F6-窗口切换一、上机输入与编辑源程序预处理器Preprocessor:执行以#开头的指令,类似于编辑器,可以添加和修改源程序。对源程序进行编译与库函数链接运行目标程序预

24、处理器预处理器CPPHello.c源程序(文本)源程序(文本)Hello.i被修改的源程序被修改的源程序(文本)(文本)编译器编译器CCLHello.s汇编程序(文本)汇编程序(文本)Hello.o可执行位目标可执行位目标程序(文本)程序(文本)#include void main( ) printf (Hello, This is a C program.n); 汇编器汇编器ASHello.o可重定位目标可重定位目标程序(文本)程序(文本)链接器链接器LDprintf.ov目前使用的大多数目前使用的大多数C编译系统都是集成环境编译系统都是集成环境(IDE)的。可以用的。可以用不同的编译系统对

25、不同的编译系统对C程序进行操作。程序进行操作。v可以用可以用Visual C+对对C程序进行编译。程序进行编译。v本课程采用的本课程采用的Visual Studio 2010的集成开发环境。的集成开发环境。v轻量级的轻量级的IED推荐:推荐:C-Free(http:/ Compiler Collection)是最流行的编译器。)是最流行的编译器。vGCC是是Linux环境下的编译器。环境下的编译器。vCygwin是一个在是一个在windows平台上运行的平台上运行的Linux模拟环境。模拟环境。vMinGW是指只用自由软件来生成纯粹的是指只用自由软件来生成纯粹的Win32可执行文件的可执行文件

26、的编译环境,它是编译环境,它是Minimalist GNU on Windows的略称。的略称。 1、文件、文件-新建新建-项目。项目。选择选择“Win32 控制台应用程序控制台应用程序”,输入,输入“名称名称”,点,点“确定确定”。 2、点、点 “下一步下一步”,在下面窗口选择,在下面窗口选择“空项目空项目”,点,点“完成完成”3、点鼠标右键、点鼠标右键 ,添加,添加-新建项新建项4、在下面窗口选择、在下面窗口选择“C+文件(文件(.cpp)”,名称输入,名称输入“hello.c”,点,点“添加添加”。5、在、在hello.c中输入源程序,点中输入源程序,点“保存保存”,#include v

27、oid main( ) printf(Hello, This is a C program.n); system(pause); /增加该语句使字符界面可以暂时停留增加该语句使字符界面可以暂时停留6、点菜单:调试、点菜单:调试-启动调试(或启动调试(或F5),运行程序。),运行程序。61补充:C程序设计预备知识n数的表示及进制转换n字节和位n原码、反码和补码62n数码、基与权n数码:表示数的符号n基:数码的个数n权:每一位所具有的值n数制n二进制n八进制n十进制n十六进制计算机中数的表示及进制转换63数制数制 进位计数制有三个要素进位计数制有三个要素: 数位数位数码在一个数的位置数码在一个数的

28、位置 基数基数某计数制中某计数制中, ,数码的个数数码的个数 位权位权某计数制中某计数制中, ,数位中数码所代表数值的数位中数码所代表数值的大小等于这数码乘上一个固定的值大小等于这数码乘上一个固定的值,该值称为该值称为位权位权 。 一个十进制数可以按位权展开成一个多项式,一个十进制数可以按位权展开成一个多项式,例如:例如: (1234)101 103+2102+3101+4100 计算机内部使用二进制数。因为八进制和十六计算机内部使用二进制数。因为八进制和十六进制能方便地与二进制实现转换,所以常用八进制进制能方便地与二进制实现转换,所以常用八进制和十六进制进行输入或输出。和十六进制进行输入或输

29、出。64 由数字由数字0,1组成,基数为组成,基数为2,逢二进一。,逢二进一。一个二进制数可按位权展开成一个多项式,一个二进制数可按位权展开成一个多项式,例如:例如: (11.101)2 1 21+120+12-1+02-2+12-3二进制二进制65八进制八进制 由数字由数字0 0 7 7组成,基数为组成,基数为8 8,逢八进一。,逢八进一。一个八进制数可按位权展开成一个多项一个八进制数可按位权展开成一个多项式,例如:式,例如: (274)8 2 82+781+48066十六进制十六进制 由数字由数字0 0 9 9和英文字母和英文字母A A至至F F组成,用组成,用A A表示表示10,B10,

30、B表示表示1111F F表示表示15,15,基数为基数为1616,逢十,逢十六进一。六进一。一个十六进制数可按位权展开成一个十六进制数可按位权展开成一个多项式,例如:一个多项式,例如: (2EA6)16 2 163+14162+10161+616067数制基权表示数码特点10,10,10,十进制数0910逢十进一二进制数0122, 2, 2,逢二进一八进制数0788, 8, 8,逢八进一十六进制数09,AF,af1616,16,16,逢十六进一十进制:4956= 410+910 +510+610二进制:1011=12+02 +12+12十六进制:81AE=816+116 +1016+1416八

31、进制:4275=48+28 +78+5868n各种进制之间的转换n二进制、八进制、十六进制转换成十进制n方法:按权相加10012345259212120212121111011)()(例10012894868381136)()(例1001231679781610162161516121)()(例AF69n各种进制之间的转换(整数)n十进制转换成二进制、八进制、十六进制n方法:连续除以基,从低到高记录余数,直至商为0例 把十进制数59转换成二进制数5922921427232120(59)10=(111011)21101111 1 1 0 1 1余余余余余余例 把十进制数159转换成八进制数159

32、8198280(159)10=(237)82 3 7 余 7余 3余 2例 把十进制数459转换成十六进制数4591628161160(459)10=(1CB)161 C B 余11余12余 170二、八、十六进制与十进制数的对照表十 进 制二 进 制八 进 制十 六 进 制0000111121 02231 13341 0 04451 0 15561 1 06671 1 17781 0 0 01 0891 0 0 11 191 01 0 1 01 2A1 11 0 1 11 3B1 21 1 0 01 4C1 31 1 0 11 5D1 41 1 1 01 6E1 51 1 1 11 7F1

33、61 0 0 0 02 01 071n二进制与八进制之间的转换n二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制n八进制转换成二进制:用3位二进制数代替每一位八进制数例 (1101001)2=(001,101,001)2=(151)8例 (246)8=(010,100,110)2=(10100110)2000 0001 1010 2011 3100 4101 5110 6111 772例:将十进制小数例:将十进制小数0.6875转换成二进制数结果为转换成二进制数结果为: (0.6875)10=(0.1011)2 0.6875 2 1.3750 整 数 部 分 为 1 0

34、.3750 2 0.7500 整 数 部 分 为 0 0.7500 2 1.5000 整 数 部 分 为 1 0.5000 2 1.0000 整 数 部 分 为 173例:例: 将十进制数将十进制数117.6875转换成二进制数。转换成二进制数。 (117.6875)10=(117)10+(0.6875)10 =(1110101)2+ (0.1011)2 = (1110101.1011)274n内存以字节为单元组成n每个字节有一个地址n一个字节一般由8个二进制位组成n每个二进位的值是0或101234567012345678910.字节和位字节和位75计算机的数据单位计算机的数据单位在计算机内部

35、,数据是以二进制形式存储和运算的。在计算机内部,数据是以二进制形式存储和运算的。 数据采用的单位有位、字节和字。数据采用的单位有位、字节和字。 位位(bit)是指二进制数的一个位是指二进制数的一个位 8个二进制位作为一个字节,即个二进制位作为一个字节,即 1 B(Byte)=8 bit 字是由一个或若干个字节组成的存储单元字是由一个或若干个字节组成的存储单元 组成一个字的二进制位数叫做该字的字长组成一个字的二进制位数叫做该字的字长 存储器的容量:存储器的容量:B,KB(1K=1024B), MB(1M=1024K),GB(1G=1024M), TB(1T=1024G)76ASCIIASCII码

36、码 ASCIIASCII码是通用的字符编码码是通用的字符编码 例如:字母例如:字母A A的的ASCIIASCII码为码为10000011000001 ( (十进制为十进制为65)65) 每个每个ASCIIASCII码用一个字节表示,最码用一个字节表示,最高二进制位为高二进制位为0 077汉字的编码汉字的编码 1. 区位码和国标码区位码和国标码 例如,汉字例如,汉字“啊啊”的区位码为的区位码为1601,转换成转换成16进制数为进制数为1001H,则国标码,则国标码3021H 。 2. 汉字内码汉字内码(机内码机内码) 例如,汉字例如,汉字“啊啊”的区位码为的区位码为1601,转换成转换成16进制

37、数为进制数为1001H,则机内码,则机内码B0A1H 。 3. 汉字外码汉字外码( (汉字输入码汉字输入码) )78 带符号数的表示带符号数的表示n真值:用真值:用、分别表示分别表示正、负正、负符号的带符号的数据,符号的带符号的数据,如:如: (1011)2、(56)10、(67)10 。真值是数的。真值是数的原始形式原始形式n机器数:机器数:符号被数码化符号被数码化的带符号数据的表示,如:的带符号数据的表示,如: (1011)2表示表示-3;(0011)2表示表示+3n最高有效位最高有效位MSBMSB表示符号位表示符号位(Sign bit)(Sign bit) 正数用正数用0 0,负数用,负

38、数用1 1表示表示n带符号数的三种常用编码方式带符号数的三种常用编码方式: : 原码(原码(Signed-MagnitudeSigned-Magnitude) 反码(反码(OneOnes Complements Complement) 补码(补码(TwoTwos Complements Complement)79符号数值符号数值(原码原码)表示法表示法n原码原码:若数长度:若数长度N Nn则则最高位最高位为为符号位符号位;正数用;正数用0 0,负数用,负数用1 1表示。表示。n其余其余N-1N-1位位为为数值位数值位,为二进制数,位数不,为二进制数,位数不足时高位补足时高位补0 0n零有两种表

39、示零有两种表示(+0+0、0 0)nn n位原码表示范围:位原码表示范围: (2(2n-1n-11)+(21)+(2n-1n-11)1)80反码表示法反码表示法n反码反码:正数正数时,时,与原码相同与原码相同;负数负数时,时,符号符号位位不变,不变,数值位数值位按位求反按位求反原码数值原码数值 反码反码 按位取反按位取反l零有两种表示零有两种表示(+0+0、0 0)ln n位反码表示范围:位反码表示范围:(2(2n-1n-11)+(21)+(2n-1n-11)1)81补码表示法补码表示法n零只有一种表示零只有一种表示nn n位补码表示范围:位补码表示范围: 2 2n-1n-1+(2+(2n-1

40、n-11)1)原码数值原码数值 补码数值补码数值 按位取反再加按位取反再加1补码补码:正数正数时,时,与原码相同与原码相同;负数负数时,在反码的时,在反码的基础上加基础上加1 1,或者从原码直接求:,或者从原码直接求:符号位符号位不变,最不变,最低数值位开始,出现第一个低数值位开始,出现第一个1 1之前,不变!其余数之前,不变!其余数值位按位求反值位按位求反82先求(先求(65)10( ? )22232216余余08422余余0余余0余余0余余0低位低位652余余121余余1将得到的二进制码用将得到的二进制码用0 0补足补足数数 值位的位数值位的位数这里为这里为1515,得到:得到:(65)1

41、0(000 0000 0100 0001)2对正数,符号位(最高位)补对正数,符号位(最高位)补0 0,且其原码反码补码,则:且其原码反码补码,则: (65)10 的原码反码补码的原码反码补码 0000 0000 0100 0001对负数,符号位对负数,符号位( (最高位最高位) )补补1 1,则:则:( (65)65)1010原码原码 1000 0000 0100 0001(65)10 的反码的反码 1111 1111 1011 1110(65)10 的补码的补码 1111 1111 1011 1111例:设机器码长度为例:设机器码长度为16,求十进制数,求十进制数 +65、-65的原码、反

42、码和补码的原码、反码和补码831. (1111 0110)原码原码( ?)?)真值真值 v 因为是原码,去掉符号位后直接将数值部分转换为十进制数据:因为是原码,去掉符号位后直接将数值部分转换为十进制数据:(111 0110111 0110)2 2(6464323216164 42 2)1010(118118)1010v 符号位为符号位为1 1,说明为负数,所以:(,说明为负数,所以:(1 1111 0110111 0110)原码原码(118118)真值真值2. 2. (1111011011110110)反码反码( ?)?)真值真值v 先将反码转换成原码先将反码转换成原码 符号位不变,数值部分按

43、位取,得:符号位不变,数值部分按位取,得:(1 1111 0110111 0110)反码反码(1 1000 1001000 1001)原码原码v 按按1 1中步骤将该原码转换为十进制数:(中步骤将该原码转换为十进制数:(1 1000 1001000 1001)原码原码(9 9)真值真值3. 3. (1111 01101111 0110)补码补码( ?)?)真值真值v 对负数而言,数值部分相同的补码比反码小对负数而言,数值部分相同的补码比反码小1 1,得:,得:(1 1111 0110111 0110)补码补码(1010)真值真值例:设机器码长度为例:设机器码长度为8 8848位二进制数的不同含

44、义8位二进制位二进制数据数据十六进制十六进制数数无符号十进无符号十进制数制数原原 码码反反 码码补补 码码0000 000000H00000000 000101H11110000 001002H22220111 11007CH1241241241240111 11017DH1251251251250111 11107EH1261261261260111 11117FH1271271271271000 000080H128 0 127 1281000 000181H129 1 126 1271000 001082H130 2 125 1261111 1100FCH252 124 3 41111 1101FDH253 125 2 31111

温馨提示

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

评论

0/150

提交评论