《《C语言程序设计》第01章C语言程序设计预备知识.ppt》由会员分享,可在线阅读,更多相关《《C语言程序设计》第01章C语言程序设计预备知识.ppt(49页珍藏版)》请在三一办公上搜索。
1、教材、参考书与课时安排,教材C语言程序设计教程 王敬华编著 清华大学出版社 参考书C语言程序设计教程习题解答与实验指导 王敬华编著清华大学出版社C语言程序设计教程 谭浩强 高等教育出版社C高级实用程序设计 王士元 清华大学出版社 课时安排授课:54学时上机:36学时,学习要求及成绩构成,学习要求课前请做好预习,课后请做好复习保持课堂安静,头脑清醒,思维活跃认真、独立、按时完成并提交作业重视上机实践,有效利用宝贵的上机时间成绩构成平时考勤:10%平时作业:10%平时上机:20%期末考试:上机考10%+笔考50%,第1章:C语言程序设计预备知识,学习的意义,1、什么是计算机?,计算机是以逻辑部件为
2、物质基础,能够对信息进行自动处理的机器。逻辑部件其实就是指计算机的硬件系统,而对信息的自动处理则是由计算机的软件系统来实现的,2、何为“信息”?,“信息”包括的范围很广,它可以是数字、文字、图像、声音等,3、计算机中如何表示“信息”?,不管哪种类型的信息在计算机中最终都是以二进制数据信息来表示和处理,4、什么是C语言?,结论:,C语言就是编制计算机软件的开发工具。具体就是对这些信息进行处理的软件工具。,除了:了解计算机硬件系统的组成(因为硬件是软件的物质基础)。了解计算机软件系统的组成(因为软件是硬件的灵魂)。更重要的是:了解二进制数在计算机中的表示形式、表示范围以及二进制数的算术运算和逻辑运
3、算,另外就是数据在计算机中是如何存储的。,学好C语言必须掌握的基础知识!,学习目标,了解计算机的系统组成及工作原理;掌握二进制数的表示及二进制数与其它进制数的转换方法;掌握机器数的表示形式和表示范围,特别是补码表示形式;掌握补码的加、减运算方法;掌握二进制数的位运算方法;,这些是更好地理解和掌握C语言数据类型(第3章)的基础。,学习内容,计算机系统组成及工作原理简介 进位计数制及其转换(二进制、八进制、十六进制)机器数的表示形式及其表示范围(原码、补码、反码)二进制数的位运算(与、或、非、异或)本章小结,1.1 计算机系统组成及工作原理简介,计算机系统,硬件系统,软件系统,运算器,控制器,存储
4、器,输入设备,输出设备,内存,外存,CPU,主机,外围设备,系统软件,应用软件,硬件是指构成计算机的物理装置,看得见、摸得着,是一些实实在在的有形实体,软件是指计算机程序及有关程序的技术文档资料,硬件系统的基本组成及工作原理,(1)运算器(ALU-Arithmetic Logic Unit),运算器又称算术逻辑部件,简称ALU,是计算机用来进行数据运算的部件。数据运算包括算术运算和逻辑运算,后者常被忽视,但恰恰是逻辑运算使计算机能进行因果关系分析。一般运算器都具有逻辑运算能力,(2)控制器(Controller),控制器是计算机的指挥系统,计算机的工作就是在控制器控制下有条不紊协调工作的。控制
5、器通过地址访问存储器,逐条取出选中单元的指令,分析指令,根据指令产生相应的控制信号作用于其它各个部件,控制其它部件完成指令要求的操作。上述过程周而复始,保证了计算机能自动、连续地工作,一般把运算器和控制器做在一块集成电路芯片上,称为中央处理器,简称为CPU(Central Processing Unit)。它是计算机核心和关键,计算机的性能主要取决于CPU。,(3)存储器(Memory),存储器是计算机中具有记忆能力的部件,用来存放程序或数据。程序和数据是两种不同的信息,应放在不同的地方,两者不可混淆。指令总是送到控制器,而数据则总是送到运算器。存储器就是一种能根据地址接收或提供指令或数据的装
6、置。,存储器可分为两大类:即内存储器和外存储器。,内存储器简称内存,又称主存,是CPU能根据地址线直接寻址的存储空间,是计算机内部存放数据的硬件设备,是程序和数据存储的基本要素,由半导体器件制成。内存中存放数据是以相应的内存单元为单位进行存放的,内存单元的大小可以是一个字节,也可以是多个字节,每个内存单元都有一个编号,它表示该内存单元所对应的内存地址。内存的特点是存取速度快,基本上能与CPU速度相匹配。外存储器简称外存,它作为一种辅助存储设备,主要用来存放一些暂时不用而又需常期保存的程序或数据。当需要执行外存中的程序或处理外存中的数据时,必须通过CPU输入输出指令,将其调入内存中才能被CPU执
7、行处理,所以外存实际上属于输入输出设备。,(4)输入设备(Input Device),输入设备是用来输入程序和数据的部件。常见的输入设备有:键盘、鼠标、麦克风、扫描仪、手写板、数码相机、摄像头等。,(5)输出设备(Output Device),输出设备正好与输入设备相反,是用来输出结果的部件。要求输出设备能以人们所能接受的形式输出信息,如以文字、图形的形式在显示器上输出。除显示器外,常用的输出设备还有音箱、打印机、绘图仪等。,计算机的工作原理:,各种各样的信息,通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。整个过程由控制器进行控制。,
8、软件系统的组成及分类,软件是指计算机程序及有关程序的技术文档资料。两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。在不太严格情况下,认为程序就是软件。,根据软件用途将其分为两大类:系统软件和应用软件,(1)系统软件,系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。这类软件一般与具体应用无关,是在系统一级上提供的服务。系统软件主要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。另一类是面向用户的软件,如各种语言处理程序(象BC、VC等)、实用程序、字处理程序等。,(2)应用软件,应用软件是指某特定领域中的某种具体应
9、用,供最终用户使用的软件,它必须在操作系统的基础上运行。如财务报表软件、数据库应用软件等。初学C语言的读者主要任务是学习如何编写应用软件。,软件与硬件的关系,硬件与软件是相互依存的,软件依赖于硬件的物质条件,而硬件则需在软件支配下才能有效地工作。在现代,软件技术变得越来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计算机,人们可以不必了解计算机本身。可以采用更加方便、更加有效地手段使用计算机。从这个意义上说,软件是用户与机器的接口。,1.2 进位计数制及其转换,数码、基与权 数码:表示数的符号 基数:数码的个数 权:每一位所具有的值数制,十进制:4956=410+910+5
10、10+610,二进制:1011=12+02+12+12,十六进制:81AE=816+116+1016+1416,八进制:4275=48+28+78+58,进制之间的相互转换二进制、八进制、十六进制转换成十进制 方法:按权相加,进制之间的相互转换二进制、八进制、十六进制转换成十进制 方法:按权相加,十进制转换成二进制、八进制、十六进制,步骤:首先进行整数部分转换,然后进行小数部分转换。(1)整数部分转换原理:,方法:连续除以基,从低到高记录余数,直至商为0,整数部分转换举例,(2)小数部分转换,原理:方法:连续乘以基,从高到低记录整数部分,直至结果的小数部分为0 在十进制的小数部分转换中,有时连
11、续乘以2不一定能使小数部分等于0,这说明该十进制小数不能用有限位二进制小数表示。这时,只要取足够多的位数,使其误差达到所要求的精度就可以了。,二进制八进制 方法:从小数点开始,分别向左、右按3位分组转换成对应的八进制数字字符,最后不满3位的,则需补0。,二进制、八进制、十六进制之间的转换,000 0001 1010 2011 3100 4101 5110 6111 7,例 将二进制数(1101101.10101)2转换成八进制数,所以(1101101.10101)2(155.52)8,二进制数:001 101 101.101 010,八进制数:,八进制二进制 方法:将每位八进制数用3位二进制表
12、示即可。,二进制、八进制、十六进制之间的转换,000 0001 1010 2011 3100 4101 5110 6111 7,例 将八进制数(345.64)8转换成二进制数,所以(345.64)2(11100101.1101)2,八进制数:3 4 5.6 4,二进制数:,二进制十六进制 方法:从小数点开始,分别向左、右按4位分组转换成对应的十六进制数字字符,最后不满4位的,则需补0。,二进制、八进制、十六进制之间的转换,例 将二进制数(1101101.10101)2转换成16进制数,所以(1101101.10101)2(6D.A8)16,二进制数:0110 1101.1010 1000,十六
13、进制数:,0000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D1110 E1111 F,十六进制二进制 方法:将每位十六进制数用4位二进制表示即可。,二进制、八进制、十六进制之间的转换,例 将十六进制数(A9D.6C)16转换成二进制数,所以(A9D.6C)2 2,十六进制数:A 9 D.6 C,二进制数:,0000 00001 10010 20011 30100 40101 50110 60111 71000 81001 91010 A1011 B1100 C1101 D111
14、0 E1111 F,请问.?(9FDA.4B)16=(_)8(256)7=(_)6,1.3 机器数的表示形式及其表示范围,真值与机器数 真值:一个带符号数由两部分组成:一部分表示数的符号,另一部分表示数的数值。一般,直接用正号“”和负号“”来表示符号的二进制数,叫做符号数的真值。机器数:计算机中的数是用二进制来表示的,数的符号也是用二进制来表示的。把一个数连同其符号在内在机器中的表示加以数值化,这样的数称为机器数。一般用最高有效位来表示数的符号,正数用0表示,负数用1表示。,1.3 机器数的表示形式及其表示范围,原码 原码又称为“符号-数值表示”。在以原码形式表示的正数和负数中,第1位表示符号
15、位,对于正数,符号位记为0,对于负数,符号位记为1,其余各位表示数值部分。,例:N1+10011 N2-01010 N1原 010011 N2原 101010,根据上述原码形成规则,一个n位的整数N(包含一位符号位)的原码一般表示为:,1.3 机器数的表示形式及其表示范围,原码,对于这样的n位整数其原码表示的数的范围为:(2n-11)(2n-1 1)。,对于定点小数,通常小数点定在最高位的左边,这时数值小于1。定点小数原码一般表示为:,对于这样的m位小数(含一符号位)其原码表示数的范围为:(1 2-(m-1)(1 2-(m-1)。,1.3 机器数的表示形式及其表示范围,原码,总结:当N为正数时
16、,N原和N的区别只是增加一位用0表示的符号位。由于在数的左边增加一位0对该数的数值并无影响,所以N原就是N本身。当N为负数时,N原和N的区别是增加一位用1表示的符号位。在原码表示中,有两种不同形式的0,即:0原 0000 或 0.000 0原 1000 或 1.000,1.3 机器数的表示形式及其表示范围,反码 反码又称为“对1的补数”。用反码表示时,左边第一位也是符号位,符号位为0代表正数,符号位为1代表负数,对于负数,反码的数值是将原码数值按位求反,而对于正数,反码和原码相同。所以,反码数值的形成与它的符号位有关,例:N1+10011 N2-01010 N1反 010011 N2反 110
17、101,根据上述反码形成规则,一个n位的整数N(包含一位符号位)的反码一般表示为:,1.3 机器数的表示形式及其表示范围,反码,对于这样的n位整数其反码表示的数的范围为:(2n-11)(2n-1 1)。,对于定点小数,若小数部分的位数为m位,则定点小数反码一般表示为:,对于这样的m位小数(含一符号位)其反码表示数的范围为:(1 2-(m-1)(1 2-(m-1)。,1.3 机器数的表示形式及其表示范围,反码,总结:正数N的反码N反与原码N原相同。对于负数N,其反码N反的的符号为1,数值部分是将原码数值按位求反。在反码表示中,有两种不同形式的0,即:0反 0000 或 0.000 0反 1111
18、 或 1.111,1.3 机器数的表示形式及其表示范围,补码补码又称为“对2的补数”。在补码表示法中,正数的补码表示同原码和反码的表示是相同的,而负数的补码表示却不同。对于负数的补码,其符号位为1,而数值位是将原码“按位求反,末位加1”。,例:N1 10011 N2 01010 N1补 010011 N2补 110110,根据上述补码形成规则,一个n位的整数N(包含一位符号位)的补码一般表示为:,注意:同原码、反码的区分!!,1.3 机器数的表示形式及其表示范围,补码,对于这样的n位整数其补码表示的数的范围为:2n-1(2n-1 1)。,对于定点小数,补码一般表示为:,对于这样的m位小数(含一
19、符号位)其补码表示数的范围为:1(1 2-(m-1),1.3 机器数的表示形式及其表示范围,补码,总结:正数N的补码N补与原码N原和反码N反相同。对于负数N,其补码N补的的符号为1,数值部分为反码数值加1。在补码表示法中,0的表示形式是唯一的,即:0补 0000 或 0.000 0补 0000 或 0.000,注意:绝大多数机器数的表示采用补码表示法。象C语言中整数在计算机中就是以其补码的形式存储的。,负数补码转换成十进制数:最高位不动,其余位取反加1,例 补码:11111001 取反:10000110 加1:10000111=-7,1.3 机器数的表示形式及其表示范围,补码的加、减运算,由补
20、码的定义可以证明如下补码加、减运算规则:,N1 N2补 N1补 N2补 N1 N2补 N1补 N2补,运算时,符号位和数据位一样参加运算,如果符号位产生进位,则需要将此进位“丢掉”。运算结果的符号位为0时,说明是正数的补码;运算结果的符号为1时,说明是负数的补码。,1.3 机器数的表示形式及其表示范围,补码的加、减运算,例:已知N110011,N201010,求N1N2补和N1N2补。解:N1N2补 N1补 N2补 010011 110110=001001 0 1 0 0 1 1)1 1 0 1 1 0 丢掉1 0 0 1 0 0 1,1.3 机器数的表示形式及其表示范围,补码的加、减运算,例
21、:已知N110011,N201010,求N1N2补和N1N2补。解:N1-N2补 N1补-N2补 010011 001010=011101 0 1 0 0 1 1)0 0 1 0 1 0 0 1 1 1 0 1,1.3 机器数的表示形式及其表示范围,无符号整数,在某些情况下,要处理的数全是正数,此时再保留符号位就没有意义了。我们可以把最高有效位也作为数值处理,这样的数称为无符号数。16位无符号数的表示范围是:0 N 65535,8位无符号数的表示范围是:0 N 255。,字符表示法,计算机中处理的信息并不全是数,有时需要处理字符或字符串,例如从键盘输入的信息或打印输出的信息都是字符方式输入输出
22、的,因此,计算机必须能表示字符(例如,C语言中可通过定义字符型变量来存储字符)。字符包括:,1.3 机器数的表示形式及其表示范围,字符表示法,字母:A、B、Z,a、b、z;数字:0、1、9;专用字符:、SP(space空格)、非打印字符:BEL(Bell响铃)、LF(Line Feed换行)、CR(Carriage Return回车)、这些字符在机器里必须用二进制数来表示。计算机中常采用美国信息交换标准代码ASCII(American Standard Code for Information Interchange)来表示。这种代码用一个字节(8位二进制码)来表示一个字符,其中低7位为字符的
23、ASCII值,最高位一般用作校验位。在附录5中给出了常用字符的ASCII值。,1.4 二进制数的位运算,逻辑变量 其值只能有0或1两种取值的变量“与”运算(AND)“与”运算又称为逻辑乘,可用符号“”或“”来表示,C语言中用“&”来表示。如有A、B两个逻辑变量,可能有的取值情况只有4种。,位运算主要包括:与(AND)、或(OR)、非(NOT)、异或(XOR),结论:即只有A、B两个变量取值均为1,则它们“与”运算的结果才为1,其它均为0。,1.4 二进制数的位运算,“或”运算(OR)“或”运算又称为逻辑加,可用符号“+”或“”来表示,C语言中用“|”来表示。如有A、B两个逻辑变量,可能有的取值
24、情况只有4种。,结论:即A、B变量中只要一个变量取值为1,则它们“或”运算的结果就是1。,1.4 二进制数的位运算,“非”运算(NOT)“非”运算又称为逻辑反,C语言中用“”来表示。,结论:即将A的值求反。,1.4 二进制数的位运算,“异或”运算(XOR)“异或”运算可用符号“”来表示,C语言中用“”来表示。如有A、B两个逻辑变量,可能有的取值情况只有4种。,结论:即当两个变量的取值相异时,则它们“异或”运算的结果就是1,相同则结果为0。,按位运算举例,例:如果两个变量的其值为X0X00FF,Y0X5555,求 X&Y、X|Y、X、XY的值,X&Y=(0 0 0 0 0 0 0 0 0 1 0
25、 1 0 1 0 1)2,X|Y=(0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1)2,X=(1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0)2,X Y=(0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0)2,本章小结,计算机是由硬件系统和软件系统组成的。硬件系统又是由控制器、运算器、存储器及输入输出设备五大部件构成的,其中控制器和运算器集成在一起成为中央处理器(CPU),控制器发出控制命令指挥其它逻辑部件进行工作,运算器可执行算术和逻辑运算操作,存储器分为内存和外存,所有的数据和程序必须在内存中运行和执行,内存中存放数据是以存储单元为单位进行存放
26、的,每个存储单元都有一个存储地址,计算机就是通过存储地址来访问存储单元的数据的。软件是指计算机程序及有关程序的技术文档资料。两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。计算机离开了软件系统是无法工作的,软件分为系统软件和应用软件,系统软件中最为典型的就是操作系统,我们平时编制的软件通常是应用软件。,本章小结,习题:P14P15 1、2、3,计算机中使用的进制数是二进制数,而不是十进制数,因为二进制只有两个数码,运算简单便于硬件实现,同时二进制便于逻辑运算。将十进制转换成二进制整数部分可采用基数除法来实现,小数部分可采用基数乘法来实现。八进制和十六进制也是C语言中经常表示数据的进制,因为它门与二进制之间的转换非常方便,但要注意它们不是计算机中使用的进制。机器数的表示形式有原码、反码和补码几种形式,计算机中通常是使用补码的形式来表示一个数,因为补码运算可以连同符号位一起参与运算,这便于运算器的设计和实现。二进制的位运算有逻辑与、逻辑或、逻辑非和逻辑异或。,