




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
个人主页:***C语言程序设计(C99版)四川大学计算机学院四川大学计算机学院2022/1/181C语言程序设计(C版)教材:《C语言程序设计(C99版)》陈良银游洪跃李旭伟主编李志蜀唐宁九李涛主审清华大学出版社2006年9月出版2022/1/182C语言程序设计(C版)本书内容
第1章基础知识第2章C语言的基本要素第3章变量名、数据类型、运算符和表达式第4章C程序基本控制结构第5章函数第6章数组和指针第7章递归第8章结构、联合、位运算和枚举类型第9章预处理命令第10章文件第11章高级话题第12章C89VsC99实验(待安排)2022/1/183C语言程序设计(C版)数据在计算机内的表示本章主要内容ARMVectorTableFIQIRQ(Reserved)DataAbortPrefetchAbortSoftwareInterruptUndefinedInstructionReset0x1C0x180x140x100x0C0x080x040x00132计算机语言计算机系统及基本工作原理4算法和数据结构5C语言标准6编程风格介绍2022/1/184C语言程序设计(C版)本章的节本要求了解计算机的基本组成结构及其基本工作原理熟悉内存组织结构、内存地址概念熟悉数据在存储器中的布局结构深入理解计算机基本工作原理、内存地址概念、C程序数据分区等基本内容方法——从总体结构入手、深入结构细节2022/1/185C语言程序设计(C版)1.1计算机系统计算机系统包含了硬件系统和软件系统两大部分。计算机硬件系统主要由运算器、控制器、存储器、输入设备和输出设备五大部件组成。计算机软件系统又分为系统软件和应用软件两大部分。2022/1/186C语言程序设计(C版)图1.1计算机系统基本组成计算机系统硬件系统软件系统
主机外部设备系统软件应用软件中央处理器内存储器输入设备输出设备外存储器文字处理软件表格处理软件辅助设计软件实时控制软件操作系统语言处理系统系统服务程序数据库管理系统运算器控制器只读存储器随机存储器编译程序解释程序汇编程序连接编辑程序连接装配程序调试程序其他服务程序2022/1/187C语言程序设计(C版)1.1.1计算机的硬件系统硬件(Hardware)——是计算机的物理实体部分。计算机处理信息的过程有点类似人的大脑处理信息的过程。计算机五大部件之间是否也可以通过什么“线”来相互传递信号啦?地址线(传递地址信号)、数据线(传递数据信号)和控制线(传递控制信号)。2022/1/188C语言程序设计(C版)把计算机系统的所有地址线统称为地址总线,所有数据线统称为数据总线,所有控制线统称为控制总线。而地址总线、数据总线和控制总线合在一起统称为计算机系统总线。计算机五大部件之间正是通过这些总线(地址总线、数据总线和控制总线)相互连接、相互联系的。2022/1/189C语言程序设计(C版)系统总线存储器运算器控制器适配器输入设备输出设备CPU主机2022/1/1810C语言程序设计(C版)为什么计算机需要以上三种总线啦?这必须吗?输入设备——输入设备将信息从外界输入到计算机中。控制器——控制器实际上就是计算机的指挥中心。运算器——运算器的主要工作就是完成算术、逻辑运算。存储器——存储器是计算机的记忆装置。输出设备——输出设备是计算机的一个执行装置。2022/1/1811C语言程序设计(C版)计算机如何进行3+2这样的简单操作?控制信号就是通过控制总线传递的。数据信号通过数据总线进行传递。那么计算机为何需要地址信号?地址信号起什么作用啦?没有地址信号线,计算机就不可能准确找到某一个内存单元。2022/1/1812C语言程序设计(C版)为了区分不同的存储单元,每个存储单元都有一个独一无二的编号,这个编号实际上就是该存储单元的地址。计算机的内存空间主要分为三个区:系统程序区、应用程序区和数据区,其中数据区又分为系统程序数据区和应用程序数据区两类。2022/1/1813C语言程序设计(C版)图1.3C语言变量的存储类型与硬件的关系运算器控制器寄存器register型变量系统程序区应用程序区静态数据区static型堆栈区auto堆区CPU存储器
三总线2022/1/1814C语言程序设计(C版)在一个通用计算机系统中,以上三种总线缺一不可。把计算机的内存储器的每一个存储单元从上向下依次叠放起来。把存储器的存储单元按照编号顺序排成一竖排。2022/1/1815C语言程序设计(C版)0x200000050x200000040x200000030x200000020x200000010x200000000x000000000xFFFFFFFF
0x180x100000030x100000020x100000010x10000000图1.4存储器的抽象结构101010102022/1/1816C语言程序设计(C版)什么是“位”呀?其实位是计算机信息表示的最小单位。计算机是通过存储0和1的不同编码组合来表示信息的。0和1的不同组合就是编码。由于每一位要么存放0、要么存放1,只有这两种选择,一共有8次选择的可能,所以总共有256种不同的组合,也就是说0x20000000存储单元就可以表示256种不同的信息。只有0和12022/1/1817C语言程序设计(C版)8位这其实就是“字节”的概念,计算机里的字节固定就是8位,一个字节占据一个存储单元。绝大部分计算机的地址编码也是按照字节来进行编号的,也就是说一个地址编码对应了一个字节存储空间(8位)。存储单元的编号也就是地址编号(即地址编码)。1字节=8位2022/1/1818C语言程序设计(C版)计算机系统地址位数决定了其存储空间的大小。地址系统只有20位,则内存单元只有1M字节。地址系统有32位,则内存单元只有4G字节。地址总线位数决定地址编码范围。2022/1/1819C语言程序设计(C版)计算机系统的地址位数与C程序的指针长度密切相关。指针变量的意思很简单——就是一个用来存放编号(也就是内存地址即指针值)的变量,也就是说用来存放地址编号的变量叫指针变量。指针变量(指针变量就是用来存放地址的变量)所占用的存储空间大小就是地址编号的位数。地址总线位数决定地址指针变量长度2022/1/1820C语言程序设计(C版)1.1.2计算机的软件系统软件(Software)——是计算机实现各种功能的程序、文档和数据的集合。系统软件包括操作系统和各种语言处理软件等。应用软件主要包括各个行业或者领域的功能处理软件。2022/1/1821C语言程序设计(C版)图1.5计算机软件系统
各种语言处理软件操作系统硬件
应用软件
系统软件2022/1/1822C语言程序设计(C版)1.2计算机的基本工作原理冯·诺依曼(Neumann)定义了现代计算机的基本结构,其特点是:硬件系统由五大部件组成,各部件具有独立的基本功能。采用二进制形式表示数据和指令。二进制用来表示信息的基本符号只有两个:0和1。2022/1/1823C语言程序设计(C版)存储程序的基本原理计算机在执行程序和处理数据时必须首先将程序和数据存储在主存储器中,计算机工作时自动高速地从主存储器中取出指令并加以分析、执行。存储程序、自动执行2022/1/1824C语言程序设计(C版)图1.6图灵机的基本组成结构读写头存储带2022/1/1825C语言程序设计(C版)0x340x120x200000050x200000040x200000030x200000020x200000010x200000000x000000000xFFFFFFFF
0x100000030x100000020x100000010x10000000图1.7读写头的移动10101010读写头地址编号存储单元存储内容2022/1/1826C语言程序设计(C版)根据存储程序的基本原理,计算机执行的指令需要预先存放在计算机的存储器中,也就是内存储器中。计算机程序的指令系列按照地址顺序依次存放在这些存储单元中。地址也就是计算机存储单元的编号。存储器的每个地址对应了一个唯一的存储单元,反过来,每个存储单元都对应了一个唯一的地址。2022/1/1827C语言程序设计(C版)计算机工作的过程就是不断地从这些存储单元取出指令、分析指令并执行指令的过程。计算机究竟应该从哪一个存储单元取指令则完全依赖于计算机CPU内的程序计数器值,程序计数器是CPU内的一个特殊计数器,其中存放的就是将要取出的下一条指令的存储单元地址。表示了读写头的位置2022/1/1828C语言程序设计(C版)程序对某一个变量的操作实际上就是对这个变量所在的存储单元的操作。C程序中的地址概念实际就是变量所在的存储单元的地址编号。不同的变量可能占据不同个数的存储单元,存放变量的第一个存储单元的地址就是该变量的地址。变量的地址等于“首地址”2022/1/1829C语言程序设计(C版)1.2.3C程序的内存分区计算机的存储器是分段组织的。分成程序段(程序区)和数据段(数据区)……。数据存储区分为了静态数据存储区和动态数据存储区两个部分,分别简称静态存储区和动态存储区。动态存储区又分为“堆”和“堆栈”两种结构形式。2022/1/1830C语言程序设计(C版)“堆栈”空间大小有限,采用“先进后出”的方式管理其数据,而且C编译器或操作系统自动管理该部分空间,且其大小有限;而“堆”空间则可以很大,它的组织方式比较灵活,需要程序员自己管理。堆栈的效率比堆的效率明显高很多。
2022/1/1831C语言程序设计(C版)C编译器将计算机内存分配方式分为以下三种:1.在静态存储区中分配——外部变量、static变量。2.在动态存储区的“堆栈”上分配。3.在动态存储区的“堆”上分配,亦称动态内存分配。程序员用malloc()函数申请堆内存,用free()函数释放堆内存。2022/1/1832C语言程序设计(C版)0x200000050x200000040x200000030x200000020x200000010x200000000x000000000xFFFFFFFF
0x100000030x100000020x100000010x10000000图1.9内存分区10101010读写头0x400000050x400000040x400000030x400000020x400000010x40000000101010100x3000FFFF0x3000FFFE0x3000FFFD0x3000FFFC0x3000FFFB10101010静态数据区
堆栈区
堆区
程序区数
据
区2022/1/1833C语言程序设计(C版)图1.8内存数据区分区静态存储区堆栈区堆区
永久生命周期
局部生命周期
用户自己管理其生命周期2022/1/1834C语言程序设计(C版)1.3计算机语言计算机语言分为三类:机器语言、汇编语言和高级语言。机器语言是计算机能够直接识别和处理的二进制机器指令;“01010101”。汇编语言是符号化了的机器语言,也就是用一些符号来表示二进制机器语言;“MOVAX,BX;”。而高级语言则是更符合人类思维特性的抽象语言。“y=x*x;”。2022/1/1835C语言程序设计(C版)1.4数据在计算机内的表示在计算机中,用0和1的不同组合来表示不同的信息。00001001”究竟是表示1、2或者3啦?为什么它就表示的这个数啦?这涉及到进位计数制和编码的问题。进位计数制就是用一组特定的数字符号按照一定的进位规则来表示数的计数方法。2022/1/1836C语言程序设计(C版)十进制则采用了“0”、“1”......“9”这10个符号。十六进制就有16个基本符号“0”、“1”......“9”、“A”、“B”、“C”、“D”、“E”、“F”。八进制表示,有8个基本符号,分别是“0”、“1”......“7”。
涉及“基”和“位权”的概念。2022/1/1837C语言程序设计(C版)在C语言中,十六进制表示以0x开头,八进制以0开头,十进制以非0数字开头。比如:0x1777(十六进制表示)、01777(八进制表示)、1777(十进制表示)。2022/1/1838C语言程序设计(C版)所谓“基”,就是在一种进位计数制中所使用的基本符号的个数。比如:0x88(正确的十六进制表示)、088(错误的八进制表示)、8FF(错误的十进制表示)。2022/1/1839C语言程序设计(C版)“位权”实际上就是在某种进制的编码中,某一个位置的基本符号为1时,它所代表的数值的大小。8648.72D=8×103+6×102+4×101+8×100+7×10-1+2×10-2在这个数中,从左至右的各位数字由于所处位置不同,它们所代表的数值的大小也不相同
2022/1/1840C语言程序设计(C版)在C语言以外的场合,通常可以用下标2、8、10、16或字母B、O、D、H分别表示二进制、八进制、十进制、十六进制数,如(11001)B、(354)O、(1224)D、(4DE)H及(10101)2、(102)8、(790)10、(B5B.CD)16等。为便于区分一般用Q表示2022/1/1841C语言程序设计(C版)
十进制 二进制八进制八进制转换为二进制码十六进制十六进制转换为二进制码 0 0000 0 000 0 0000 1 0001 1 001 1 0001 2 0010 2 010 2 0010 3 0011 3 011 3 0011 4 0100 4 100 4 0100 5 0101 5 101 5 0101 6 0110 6 110 6 0110 7 0111 7 111 7 0111 8 1000 10 001000 8 1000 9 1001 11 001001 9 1001 10 1010 12 001010 A 1010 11 1011 13 001011 B 1011 12 1100 14 001100 C 1100 13 1101 15 001101 D 1101 14 1110 16 001110 E 1110 15 1111 17 001111 F 1111 16 10000 20 010000 10 00010000 17 10001 21 010001 11 00010001 2022/1/1842C语言程序设计(C版)不同进位计数制之间的转换
R进制数转换为十进制数1001.11=23+20+2-1+2-2=9.750227 =2×82+2×81+7×80=1510x3AB =3×162+A×161+B×l60=3×162+10×161+11×160
=9392022/1/1843C语言程序设计(C版)十进制数转换为R进制数125=1111101B,转换过程如图1.10所示:125=0175,转换过程如图1.10所示:125=0x7D,转换过程如图1.10所示:2022/1/1844C语言程序设计(C版)图1.10十进制数转换为二进制数、八进制数、十六进制数2125262123102151271231211
01余数商高位81258155817
01余数商高位16
125167D
07余商高位2022/1/1845C语言程序设计(C版)二进制数与八进制、十六进制数之间的转换分组:010
100
111
101代值:2475结果:10100111101B=02475(小数分组,不足三位,必须补0)010100101.100100245.442022/1/1846C语言程序设计(C版)110001011010B = 0x0C5A1111111.101B = 0x7F.A0x0ABC = 1010101111000x0D65.4A=110101100101.0100101B2022/1/1847C语言程序设计(C版)数值信息在计算机中的表示数据分为数值型数据和非数值型数据两大类。数值型数据是指能进行算术运算(加、减、乘、除四则运算)的数据。非数值数据是指文字、图像等不能进行算术运算的数据。如何表示啦?实际上就是根据一定的约定来表示,这种约定就是表示数值大小的编码规则。
2022/1/1848C语言程序设计(C版)机器数本身所具有的实际数值称为真值。同一个机器数按照编码约定的方式不同可能具有不同的真值。大家一定要掌握某个数在计算机的机内表示及其运算规则。
相同的机器数、不同的真值2022/1/1849C语言程序设计(C版)原码原码就是在真值的基础上加上符号位即可。十进制二进制真值原码+94+101111001011110-49-0110001101100012022/1/1850C语言程序设计(C版)反码对于正数,其反码与原码形式相同;对于负数,将原码中符号位以外的各位数字取反即得补码(即“0”变为“1”,“1”变为“0”)。例如:十进制二进制真值原码反码 +114+11100100111001001110010–89–101100111011001101001102022/1/1851C语言程序设计(C版)补码对于正数,其补码与原码形式相同;对于负数,在反码的基础上,末位再加1就得到负数的补码。例如:十进制二进制真值原码反码 补码+114+11100100111001001110–89–101100111011 101001112022/1/1852C语言程序设计(C版)基本表示数值32位表示16位8位-211111111111111111111111111111110111111111111111011111110-10111111111111111111111111111101101111111111110110111101101100000000000000000000000000001011000000000000101100001011128000000000000000000000001000000000000000100000000超出表示范围2022/1/1853C语言程序设计(C版)定点数和浮点数机器数又分为定点数和浮点数两种。定点表示是将小数点位置约定在一个固定的位置上。通常有以下两种约定:定点整数和定点小数。浮点数的小数点位置是不固定的,可以浮动。2022/1/1854C语言程序设计(C版)图1.11定点整数和定点小数的表示11111001数符小数点位置
数值部分11111001数符小数点位置数值部分a.定点小数表示b.定点整数表示2022/1/1855C语言程序设计(C版)不同类型的数在计算机中所占的字节数变量的数据类型就决定了变量在内存单元中所占据的字节数,也决定了其取值范围。folat(浮点型)4个字节double(双精度浮点型)
8个字节char(字符型)
1个字节short(短整型)
2个字节long(长整型)
4个字节int(整型)可能2字节,也可能4字节(随环境而不同)。决定长度2022/1/1856C语言程序设计(C版)二进制算术运算和逻辑运算算术运算即加(+)、减(-)、乘(*)、除(/)、取余(%)五种运算。
110110 (被加数) 101110 (加数)+)11111(进位)1100100(和数)2022/1/1857C语言程序设计(C版)与运算ABC0000101001112022/1/1858C语言程序设计(C版)或运算ABC0000101001112022/1/1859C语言程序设计(C版)非运算AC01102022/1/1860C语言程序设计(C版)异或运算ABC0000111011102022/1/1861C语言程序设计(C版)位运算C语言的逻辑运算C语言的位运算操作数100000001(非0=真)00000001操作数200000010(非0=真)00000010结果结果为真=100000000最后结果为02022/1/1862C语言程序设计(C版)ASCII码ASCII码是美国国家标准信息交换码(AmericannationalStandardCodeforInformationInterchange)的简称,是目前国际上使用最广泛的计算机字符编码。ASCII码的编码规则为:每个字符用7位二进制数(b6b5b4b3b2blb0)来表示(如表1.9所示),7位二进制共有128种状态(27=128),可表示128个字符,7位二进制编码的取值范围为~。2022/1/1863C语言程序设计(C版)
b6b5b4b3b2b1b00000010100111001011101110000NULDLESP0@P`p0001SOHDC1!1AQaq0010STXDC2"2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB'7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\l|1101CRGS-=M]m}1110SORS.>N^n~1111SIUS/?O_oDEL2022/1/1864C语言程序设计(C版)1.5算法和数据结构程序=算法+数据结构对于学习程序设计语言而言,数据结构是很重要的,所有的算法都基于某种结构。比如:当一个艄公想把小羊、大白菜、和狼渡到河对岸的时候(当艄公不在时,狼要吃小羊、小羊要吃大白菜,而艄公的船一次只能够载一样东西),他就会思考如何解决这件事,而他完成这件事的方法和步骤就是算法。2022/1/1865C语言程序设计(C版)它有以下特点:有穷性:一个算法应包含有限的操作步骤而不能是无限的。确定性:算法中每一个步骤应当是确定的,而不应当是含糊的、模棱两可的。有零个或多个输入。有一个或多个输出。有效性:算法中每一个步骤应当能有效地执行,并得到确定的结果。2022/1/1866C语言程序设计(C版)数据结构主要研究数据的组织方式、结构关系以及相应的操作方法。算法的设计与实现,依赖于数据的逻辑结构与存储结构,数据结构的选择直接决定了算法的质量,而算法则决定了程序的质量。2022/1/18
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《A day in the park》作业设计方案
- 个人消防责任书
- 协议合同和加盟合同范本
- 医疗器材加工合同范本
- 中药炮制工中级习题库+参考答案
- 生物制药复习题+答案
- 农艺工中级模考试题(含答案)
- 接触网中级工测试题
- 七律长征 教案教学设计
- 危废佣金合同范本
- 南航集团招聘笔试题库2024
- 中级消防设施操作员证培训项目服务方案
- 精神障碍诊疗规范(2020-年版)-人格-现实解体障碍
- 污水处理及中水回用工程可行性研究报告书
- 城市合伙人合同协议书
- 小学六年级语文下册《北京的春天》课件
- 景观照明设施运行维护经费估算
- GB/T 12279.1-2024心血管植入器械人工心脏瓣膜第1部分:通用要求
- 人工智能在维修行业的应用
- 福建省泉州市第五中学2023-2024学年八年级下学期期中语文试题
- 2024CSCO恶性肿瘤患者营养治疗指南解读
评论
0/150
提交评论