第1章C语言程序设计预备知识制作人:王敬华教材、参考书与课时安排教材C语言程序设计教程王敬华编著清华大学出版社参考书•C语言程序设计教程习题解答与实验指导王敬华编著清华大学出版社•C语言程序设计教程谭浩强高等教育出版社•C高级实用程序设计王士元清华大学出版社课时安排•授课:54学时•上机:36学时学习要求及成绩构成学习要求课前请做好预习,课后请做好复习保持课堂安静,头脑清醒,思维活跃认真、独立、按时完成并提交作业重视上机实践,有效利用宝贵的上机时间成绩构成平时考勤:10%平时作业:10%平时上机:20%期末考试:上机考10%+笔考50%第1章:C语言程序设计预备知识学习的意义1、什么是计算机?计算机是以逻辑部件为物质基础,能够对信息进行自动处理的机器。逻辑部件其实就是指计算机的硬件系统,而对信息的自动处理则是由计算机的软件系统来实现的2、何为“信息”?“信息”包括的范围很广,它可以是数字、文字、图像、声音等3、计算机中如何表示“信息”?不管哪种类型的信息在计算机中最终都是以二进制数据信息来表示和处理101010111111…….语言程序设计教程王敬华第一章预备知识C4、什么是C语言?结论:C语言就是编制计算机软件的开发工具。具体就是对这些信息进行处理的软件工具。除了:了解计算机硬件系统的组成(因为硬件是软件的物质基础)。了解计算机软件系统的组成(因为软件是硬件的灵魂)。更重要的是:了解二进制数在计算机中的表示形式、表示范围以及二进制数的算术运算和逻辑运算,另外就是数据在计算机中是如何存储的。学好C语言必须掌握的基础知识!!!语言程序设计教程王敬华第一章预备知识C学习目标了解计算机的系统组成及工作原理;掌握二进制数的表示及二进制数与其它进制数的转换方法;掌握机器数的表示形式和表示范围,特别是补码表示形式;掌握补码的加、减运算方法;掌握二进制数的位运算方法;这些是更好地理解和掌握C语言数据类型(第3章)的基础。语言程序设计教程王敬华第一章预备知识C学习内容计算机系统组成及工作原理简介进位计数制及其转换(二进制、八进制、十六进制)机器数的表示形式及其表示范围(原码、补码、反码)二进制数的位运算(与、或、非、异或)本章小结语言程序设计教程王敬华第一章预备知识C1.1计算机系统组成及工作原理简介计算机系统硬件系统软件系统运算器控制器存储器输入设备输出设备内存外存CPU主机外围设备系统软件应用软件硬件是指构成计算机的物理装置,看得见、摸得着,是一些实实在在的有形实体软件是指计算机程序及有关程序的技术文档资料语言程序设计教程王敬华第一章预备知识C硬件系统的基本组成及工作原理输入设备内存储器外存储器运算器控制器输出设备信息(如程序、原始数据)(存)数据(取)数据运算命令输出命令输出信息(存)数据存取指令程序指令数据输入指令数据信息控制信息语言程序设计教程王敬华第一章预备知识C(1)运算器(ALU-ArithmeticLogicUnit)运算器又称算术逻辑部件,简称ALU,是计算机用来进行数据运算的部件。数据运算包括算术运算和逻辑运算,后者常被忽视,但恰恰是逻辑运算使计算机能进行因果关系分析。一般运算器都具有逻辑运算能力(2)控制器(Controller)控制器是计算机的指挥系统,计算机的工作就是在控制器控制下有条不紊协调工作的。控制器通过地址访问存储器,逐条取出选中单元的指令,分析指令,根据指令产生相应的控制信号作用于其它各个部件,控制其它部件完成指令要求的操作。上述过程周而复始,保证了计算机能自动、连续地工作语言程序设计教程王敬华第一章预备知识C一般把运算器和控制器做在一块集成电路芯片上,称为中央处理器,简称为CPU(CentralProcessingUnit)。它是计算机核心和关键,计算机的性能主要取决于CPU。(3)存储器(Memory)存储器是计算机中具有记忆能力的部件,用来存放程序或数据。程序和数据是两种不同的信息,应放在不同的地方,两者不可混淆。指令总是送到控制器,而数据则总是送到运算器。存储器就是一种能根据地址接收或提供指令或数据的装置。存储器可分为两大类:即内存储器和外存储器。语言程序设计教程王敬华第一章预备知识C内存储器简称内存,又称主存,是CPU能根据地址线直接寻址的存储空间,是计算机内部存放数据的硬件设备,是程序和数据存储的基本要素,由半导体器件制成。内存中存放数据是以相应的内存单元为单位进行存放的,内存单元的大小可以是一个字节,也可以是多个字节,每个内存单元都有一个编号,它表示该内存单元所对应的内存地址。内存的特点是存取速度快,基本上能与CPU速度相匹配。外存储器简称外存,它作为一种辅助存储设备,主要用来存放一些暂时不用而又需常期保存的程序或数据。当需要执行外存中的程序或处理外存中的数据时,必须通过CPU输入/输出指令,将其调入内存中才能被CPU执行处理,所以外存实际上属于输入/输出设备。语言程序设计教程王敬华第一章预备知识C(4)输入设备(InputDevice)输入设备是用来输入程序和数据的部件。常见的输入设备有:键盘、鼠标、麦克风、扫描仪、手写板、数码相机、摄像头等。(5)输出设备(OutputDevice)输出设备正好与输入设备相反,是用来输出结果的部件。要求输出设备能以人们所能接受的形式输出信息,如以文字、图形的形式在显示器上输出。除显示器外,常用的输出设备还有音箱、打印机、绘图仪等。语言程序设计教程王敬华第一章预备知识C计算机的工作原理:各种各样的信息,通过输入设备,进入计算机的存储器,然后送到运算器,运算完毕把结果送到存储器存储,最后通过输出设备显示出来。整个过程由控制器进行控制。软件系统的组成及分类软件是指计算机程序及有关程序的技术文档资料。两者中更为重要的是程序,它是计算机进行数据处理的指令集,也是计算机正常工作最重要的因素。在不太严格情况下,认为程序就是软件。根据软件用途将其分为两大类:系统软件和应用软件语言程序设计教程王敬华第一章预备知识C(1)系统软件系统软件是指管理、监控、维护计算机正常工作和供用户操作使用计算机的软件。这类软件一般与具体应用无关,是在系统一级上提供的服务。系统软件主要包括以下两类:一类是面向计算机本身的软件,如操作系统、诊断程序等。另一类是面向用户的软件,如各种语言处理程序(象BC、VC等)、实用程序、字处理程序等。(2)应用软件应用软件是指某特定领域中的某种具体应用,供最终用户使用的软件,它必须在操作系统的基础上运行。如财务报表软件、数据库应用软件等。初学C语言的读者主要任务是学习如何编写应用软件。语言程序设计教程王敬华第一章预备知识C软件与硬件的关系硬件与软件是相互依存的,软件依赖于硬件的物质条件,而硬件则需在软件支配下才能有效地工作。在现代,软件技术变得越来越重要,有了软件,用户面对的将不再是物理计算机,而是一台抽象的逻辑计算机,人们可以不必了解计算机本身。可以采用更加方便、更加有效地手段使用计算机。从这个意义上说,软件是用户与机器的接口。语言程序设计教程王敬华第一章预备知识C1.2进位计数制及其转换数码、基与权•数码:表示数的符号•基数:数码的个数•权:每一位所具有的值数制语言程序设计教程王敬华第一章预备知识C数制基权表示数码特点10º,10¹,10²,…十进制数0~910逢十进一二进制数0~122º,2¹,2²,…逢二进一八进制数0~788º,8¹,8²,…逢八进一十六进制数0~9,A~F,a~f1616º,16¹,16²,…逢十六进一十进制:4956=410³+910²+510¹+610º二进制:1011=12³+02²+12¹+12º十六进制:81AE=816³+116²+1016¹+1416º八进制:4275=48³+28²+78¹+58º语言程序设计教程王敬华第一章预备知识C进制之间的相互转换二进制、八进制、十六进制转换成十进制方法:按权相加100123452592121202121211110111)()(:例10012894868381136:3)()(例1001231679781610162161516121:4)()(例AF103210123452625.59212021212120212121101.111011:2)()(例语言程序设计教程王敬华第一章预备知识C进制之间的相互转换二进制、八进制、十六进制转换成十进制方法:按权相加十进制转换成二进制、八进制、十六进制步骤:首先进行整数部分转换,然后进行小数部分转换。(1)整数部分转换原理:的余数是2)2......22(222......22)......(00012110011112011NaaaaaaaaaaaaaNnnnnnnnnnn方法:连续除以基,从低到高记录余数,直至商为0语言程序设计教程王敬华第一章预备知识C整数部分转换举例例把十进制数59转换成二进制数5922921427232120(59)10=(111011)2110111111011余余余余余余第一次得到的余数是最低位最后得到的余数是最高位例把十进制数159转换成八进制数1598198280(159)10=(237)8237余7余3余2例把十进制数459转换成十六进制数4591628161160(459)10=(1CB)161CB余11余12余1语言程序设计教程王敬华第一章预备知识C(2)小数部分转换原理:方法:连续乘以基,从高到低记录整数部分,直至结果的小数部分为0在十进制的小数部分转换中,有时连续乘以2不一定能使小数部分等于0,这说明该十进制小数不能用有限位二进制小数表示。这时,只要取足够多的位数,使其误差达到所要求的精度就可以了。的整数部分是2N)2......2(22......22)......(11mm1211mm22112m21aaaaaaaaaaN例将十进制数0.8125转换成二进制0.8125×2=1.625(b1=1)最高小数位0.625×2=1.25(b2=1)0.25×2=0.5(b3=0)0.5×2=1.0(b4=1)最低小数位所以(0.8125)10=(0.1101)2注意:对于小数部分的转换式中的整数不参加连乘,第一次乘以2所得到的整数部分是二进制数小数的最高位,最后所得到的整数部分是二进制数小数的最低位。例将十进制数0.8123转换成二进制0.8123×2=1.6246(b1=1)最高小数位0.6246×2=1.2492(b2=1)0.2492×2=0.4984(b3=0)0.4984×2=0.9968(b4=0)最低小数位…………所以(0.8123)10≈(0.1100)2例将十进制数0.8123转换成八进制0.8123×8=6.4984(b1=6)最高小数位0.4984×8=3.9872(b2=3)0.9872×8=7.8976(b3=7)0.8976×8=7.1808(b4=7)最低小数位…………所以(0.8123)10≈(0.6377)8语言程序设计教程王敬华第一章预备知识C二进制八进制方法:从小数点开始,分别向左、右按3位分组转换成对应的八进制数字字符,最后不满3位的,则需补0。二进制、八进制、十六进制之间的转换000~0001~1010~2011~3100~4101~5110~6111~7例将二进制数(1101101.10101)2转换成八进制数所以(1101101.10101)2=(155.52)8二进制数:001101101.1010101八进制数:55.52语言程序设计教程王敬华第一章预备知识C八进制二进制方法:将每位八进制数用3位二进制表示即可。二进制、八进制、十六进制之间的转换000~0001~1010~2011~3100~4