第1章计算机基础知识 主要内容 计算机的发展过程及各代计算机的特点 计算机的分类、主要特点及用途 计算机系统的组成原理,硬件系统及软件系统概念 信息的基本概念; 十进制、二进制、八进制及十六进制的概念及它们之间的转换关系; ASCII字符以及中文字符编码 微型计算机的硬件组成,包括CPU、内存、主板、总线以及常用外部设备 电子计算机是一种具有极快的处理速度、很强的存储能力、精确的计算和逻辑判断能力,由程序自动控制操作过程的电子装置。 1.1计算机的基本概念 1.1.1计算机的发展史 世界上第一台真正意义上的电子计算机于1946年在美国宾夕法尼亚大学诞生,取名为“电子数值积分器及计算机”(Electronic Numerical Integrator And Computer,ENIAC)。ENIAC共用了18000个电子管,重约30t,占地约150m2,耗电150kW,如图1.1所示。 图1.1第一台电子计算机ENIAC ENIAC的结构在很大程度上还是依照机电系统设计的,要计算一个新的题目,就需要将线路重新搭接一次。ENIAC的运算速度是每秒做5000次加法运算,功能远不及今天最普通的微型计算机,但在当时它已是运算速度的绝对冠军,并且其运算的精确度和准确度也是史无前例的。ENIAC奠定了电子计算机的发展基础,在计算机发展史上具有划时代的意义,它的问世标志着电子计算机时代的到来。 从ENIAC诞生至今已有七十多年的历史,计算机也有了飞速的发展,根据其基本构成元件的不同,计算机经历了电子管、晶体管、集成电路、大规模集成电路和超大规模集成电路4个发展时代。 1. 第一代电子计算机 第一代电子计算机(1946—1957年)使用电子管作为主要电子器件; 用穿孔卡片机作为数据和指令的输入设备; 主存储器采用汞延迟线和磁鼓; 外存储器采用磁带机; 使用机器语言或汇编语言编写程序。其主要特点是体积大、重量大、性能低、能耗大、成本高,主要应用于军事和科学研究领域。这一代计算机的主要标志如下。 形成了以冯·诺依曼原理为基础的电子计算机的基本结构。 确定了程序设计的基本方法,采用机器语言和汇编语言进行程序设计。 首次采用CRT作为计算机的输出显示。 2. 第二代电子计算机 第二代电子计算机(1958—1964年)使用晶体管作为主要电子器件; 主存储器采用磁芯; 外存储器开始使用硬盘。第二代电子计算机体积相对小、功能强、可靠性高,除用于军事和科学研究外,还用于数据处理和事务处理。这一代计算机的主要标志如下。 开创了计算机处理文字和图形的新阶段。 开始有了系统软件,提出了操作系统概念。 程序设计开始使用高级语言,如ALGOL、FORTRAN 等。 开始使用鼠标(1963年)作为输入设备。 开始有了通用机和专用机之分。 3. 第三代电子计算机 第三代电子计算机(1965—1970年)使用小规模集成电路(Small Scale Integration,SSI)和中规模集成电路(Medium Scale Integration,MSI)作为主要电子器件,主存储器开始使用半导体器件,存储容量进一步增大,而体积、重量、功耗则大幅降低。计算机开始广泛应用于企业管理、辅助设计制造等多个领域。这一代计算机的主要标志如下。 运算速度可高达几百万次。 出现分时操作系统。 出现结构化程序设计方法,使程序设计功能增强。 机器可根据其性能分为巨型机、大型机、中型机和小型机。 4. 第四代电子计算机 第四代电子计算机(1970年至今)采用大规模集成电路(Large Scale Integration,LSI)和超大规模集成电路(Very Large Scale Integration,VLSI)作为主要电子器件,使得计算机更加小型化、微型化。其主存储器采用半导体存储器; 中央处理器(CPU)高度集成化; 外存储器进一步向容量大、体积小的方向发展。在这期间,1971年,美国Intel 公司研制成功Intel 4004微处理器,并在此基础上公布了世界上第一台微型计算机MCS4; 1981年,IBM公司推出16位IBM PC微型计算机,使得微型计算机开始大量进入家庭,也使得PC成了个人计算机的代名词。这一代计算机的主要标志如下。 操作系统不断完善,应用软件的开发成为现代工业的一部分。 多媒体技术的发展,使计算机的应用渗透到更多的领域。 计算机的发展进入了以网络为特征的时代。 1.1.2计算机的分类 计算机分类的方法有以下几种。 1. 按计算机处理数据的方式 (1) 数字计算机: 参与运算的数值用断续(不连续)的数字量表示,其运算过程按数字位进行计算,速度快、精确度高。现代计算机一般就是指数字电子计算机。 (2) 模拟计算机: 参与运算的数值由不间断的连续量表示,其运算过程是连续的,模拟计算机由于受元器件质量影响,计算精度较低,应用范围较窄,目前已很少生产。 (3) 数模混合计算机: 既可以接收、处理和输出模拟量,也可以接收、处理和输出数字量。 2. 按计算机使用范围 (1) 通用计算机: 通用计算机适应性很强,应用面很广,但其运行效率、速度和经济性依据不同的应用对象会受到不同程度的影响。 (2) 专用计算机: 针对某类问题能显示出最有效、最快速和最经济的特性,但它的适应性较差,不适于其他方面的应用。在导弹和火箭上使用的计算机很大部分就是专用计算机。 3. 按计算机规模 (1) 巨型机: 一种超大型电子计算机,具有很强的计算和处理数据的能力,主要特点表现为高速度和大容量,配有多种外部和外围设备及丰富的、高功能的软件系统,主要用于大型科学与工程计算和大规模数据处理。著名的机器有美国的CMZ、CM5、nCUBE等机器。中国的银河、天河系列计算机也属于此类。 (2) 大中型机: 具有很快的运算速度和很大的存储容量,主要应用于大中型企业、计算中心和计算机网络。 (3) 小型机: 一般是指介于PC服务器和大型机(Mainframe)之间、拥有8路~32路处理器能力的服务器产品。由于小型机是封闭专用的计算机系统,一般每个厂家的小型机的处理器、I/O总线、网卡、显示卡、SCSI卡和软件都是特别设计的,还有各个厂家的专利技术,所以一般不能通用。 (4) 微型机: 一般来说,微型计算机是使用微处理器作为CPU的计算机。这类计算机的一个普遍特征就是占用很少的空间。桌面计算机、游戏机、笔记本电脑、Tablet PC,以及种类众多的手持设备都属于微型计算机。 (5) 工作站: 介于微型机和小型机之间的高档微型计算机,其运算速度比微型机快,配备有大容量存储器和大屏幕显示器,具有较强的图形图像处理能力以及较强的通信功能,主要用于图像处理、计算机辅助设计等。 1.1.3计算机的主要特点 1. 自动控制能力 计算机可以在程序的控制下自动完成预定任务。 2. 高速运算的能力 现代计算机的运算速度最高可达每秒几万亿次,远远高于人类手动的运算速度。 3. 强大的记忆能力 计算机拥有容量很大的存储设备(内存和外存),不但可以存储程序,也可以存储数据,这些数据可以用于进行各种分析处理,以满足不同的需求。 4. 计算精度高 计算机的计算精度与CPU的字长有关,字长越长,计算机能处理的有效数字越多,精度也就越高。目前,微型计算机的CPU 字长已经达到64位,通过运用计算技巧等技术手段,可以获得千分之一、百万分之一甚至更高的精度。 5. 逻辑判断能力 计算机可以依靠软件的功能进行逻辑判断,因此具有逻辑判断能力。 6. 通用性 计算机能够在各行各业得到广泛的应用,具有很强的通用性。这主要体现在软件上,只要安装(或使用)不同的软件,就可以解决不同的问题。 1.1.4计算机的主要用途 1. 科学计算 科学计算是指应用计算机处理科学研究和工程技术中所遇到的数学计算。应用计算机进行科学计算,如人造卫星轨道的计算、航天飞机飞行、天气预报、地质勘探和建筑设计等,可为问题求解带来质的进展,使往往需要几百名专家几周、几月甚至几年才能完成的计算,只要短时间就可得到正确结果。 2. 数据处理(信息处理) 信息处理是对原始数据进行收集、整理、分类、选择、存储、制表、检索、输出等的加工过程。信息处理是计算机应用的一个重要方面,涉及的范围和内容十分广泛,如自动阅卷、图书检索、财务管理、生产管理、医疗诊断、编辑排版、情报分析等。 3. 实时控制 实时控制是指及时搜集检测数据,按最佳值对事物进程的调节控制,如工业生产的自动控制。利用计算机进行实时控制,既可提高自动化水平,保证产品质量,也可降低成本,减轻劳动强度。 4. 计算机辅助系统 计算机辅助系统可帮助人们更好地完成各种任务。例如计算机辅助设计(Computer Aided Design,CAD)、计算机辅助制造(Computer Aided Manufacturing,CAM)、计算机辅助工程(Computer Aided Engineering,CAE)、计算机集成制造系统(Computer Integrated Manufacturing System,CIMS)、计算机辅助教学(Computer Aided Instruction,CAI)等。 5. 人工智能 利用计算机模拟人类智力活动,以替代人类部分脑力劳动,这是一个很有发展前途的学科方向。第五代计算机的开发,将成为智能模拟研究成果的集中体现。具有一定“学习、推理和联想”能力的机器人的不断出现,正是智能模拟研究工作取得进展的标志。智能计算机作为人类智能的辅助工具,将被越来越多地用到人类社会的各个领域。 6. 计算机网络 计算机技术和通信技术相结合产生了计算机网络,使计算机从独立的单机进入了相互连接的网络化时代,实现了所连接的计算机之间相互通信和资源共享。网络进一步强化了计算机的功能,网络中应用的多样化使计算机的使用更加广泛。 7. 多媒体计算机系统 多媒体技术就是利用计算机综合处理文字、图形、图像、声音、视频等多种媒体的技术,使多种信息建立逻辑连接,集成为一个系统,具有集成性、实时性和交互性。多媒体技术以计算机技术为核心,将现代声像技术和通信技术融为一体,其应用领域十分广泛。 近年来,多媒体技术得到迅速发展,多媒体计算机系统的应用更以极强的渗透力进入人类生活的各个领域,如游戏、教育、档案、图书、娱乐、艺术、股票债券、金融交易、建筑设计、家庭、通信,等等。 1.2计算机系统的组成 虽然计算机的种类繁多,在规模、价格、复杂程度及设计技术等方面有很大的差别,但各种计算机的基本原理都是一样的。美籍匈牙利数学家冯·诺依曼于1946年提出了三个计算机设计的基本思想(冯·诺依曼原理): 采用二进制形式表示计算机的指令和数据。 将程序(由一系列指令组成)和数据存放在存储器(内存)中,并让计算机自动地执行程序。 计算机由运算器、控制器、存储器、输入设备和输出设备五个基本部分组成。 依照冯·诺依曼原理设计的计算机系统由硬件系统和软件系统组成,如图1.2所示。 图1.2计算机系统的组成 1. 计算机硬件系统 硬件是指计算机系统中所使用的电子线路和物理设备,是看得见、摸得着的实体,如中央处理器(CPU)、存储器、外部设备(输入输出设备)等。计算机的硬件系统由运算器、控制器、存储器、输入设备和输出设备五大部分组成,如图1.3所示。控制器和运算器合称为中央处理器(CPU),存储器分为内存储器(内存)和外存储器(外存),输入、输出设备合称为外部设备(外设)。 图1.3计算机硬件组成 1) 运算器 运算器通常由算术逻辑部件ALU(Arithmetic Logic Unit)和一系列寄存器组成。它的功能是在控制器的控制下对内存或内部寄存器中的数据进行算术运算和逻辑运算(与、或、非、比较、移位),运算结果保存在内存中。 2) 控制器 控制器是计算机的指挥控制中心。它负责从内存储器中逐条取出指令,并对指令进行分析,然后根据指令的要求,向各部件发出控制信号,使之自动、连续并协调动作,完成数据和程序的输入、运算并输出结果。 3) 存储器 存储器是用于保存程序、数据、运算中间及最终结果的记忆设备,分为内存储器(主存储器,内存)及外存储器(辅助存储器,外存)。内存中存放程序指令和数据,外存中存放需要长期保存的程序和数据,外存中的程序和数据必须读到内存后,才能被计算机处理。 4) 输入设备 输入设备是向计算机输入程序、数据及各种信息的设备,如键盘、鼠标、磁盘驱动器等。 5) 输出设备 输出设备是将计算机工作的中间及最终结果从内存送出的设备,如显示器、打印机等。 2. 计算机软件系统 计算机软件是指能使计算机硬件系统顺利和有效工作的程序及其数据集合的总称,分为系统软件及应用软件两大类。 1) 系统软件 系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作,一般分为操作系统、语言处理程序、数据库管理系统及工具软件。 (1) 操作系统: 计算机软件系统的核心,是用户与计算机之间的桥梁和接口,是最贴近计算机硬件的系统软件。主要作用是管理计算机中的所有硬件资源和软件资源,控制计算机中程序的执行,为用户提供功能完备且操作灵活方便的应用环境。如目前广泛在PC中使用的桌面操作系统Windows 7/10、服务器使用的Windows Server 2016/2022、UNIX等。 (2) 语言处理程序: 计算机只能执行用二进制数表示的机器代码(即机器语言程序),用汇编语言或高级语言编写的程序(称为源程序),计算机是不能识别和执行的。因此,必须配备一种工具,它的任务是把用汇编语言或高级语言编写的源程序翻译成机器可执行的机器语言程序,这种工具就是“语言处理程序”。语言处理程序包括汇编程序、解释程序和翻译程序。汇编程序是把用汇编语言写的汇编语言源程序翻译成机器可执行的由机器语言表示的目标程序的翻译程序,其翻译过程叫汇编。解释程序接受用某种程序设计语言(如Python语言)编写的源程序,然后对源程序中的每一个语句进行解释并执行,最后得出结果。也就是说,解释程序对源程序是一边翻译,一边执行。所以,它是直接执行源程序或源程序的内部形式的,它并不产生目标程序。解释程序执行的速度要比编译程序慢得多,但对源程序错误的修改也较方便。编译程序是将用高级语言所编写的源程序翻译成与之等价的用机器语言表示的目标程序的翻译程序,其翻译过程称为编译。编译程序与解释程序的区别在于,前者首先将源程序翻译成目标代码,计算机再执行由此生成的目标程序; 而后者则是检查高级语言书写的源程序,然后直接执行源程序所指定的动作。一般而言,建立在编译基础上的系统在执行速度上都优于建立在解释基础上的系统。但是,编译程序比较复杂,这使得开发和维护费用较大; 相反,解释程序比较简单,可移植性也好,缺点是执行速度慢。 (3) 数据库系统: 数据库系统(Data Base System,DBS)主要包括数据库(Data Base,DB)和数据库管理系统(Data Base Management System,DBMS)。数据库是按一定的组织结构保存于某种存储介质的一批相关数据的集合。数据库管理系统是管理数据库的软件,用于控制数据库中数据的建立、存取、管理和维护,以实现数据库系统的各种功能。数据库存在多种模型。以关系数据库(Relational Database)的使用最为广泛,例如桌面型的Access、企业级的MS SQL Server、Oracle等。 (4) 工具软件: 主要指系统支持及服务程序,例如文件系统管理、网络连接管理、机器的调试、故障检查和诊断程序等程序。 2) 应用软件 应用软件是用户利用计算机硬件和系统软件,为解决各种实际应用问题而编制的程序。应用软件分为用户程序和应用软件包。 (1) 用户程序: 用户为解决自己的特定问题而开发的应用软件。 (2) 应用软件包: 为实现某种特殊功能而设计的独立软件系统,如Microsoft 的Office、图像处理软件Photoshop等。 1.3信息编码 1.3.1数值在计算机中的表示形式 在计算机内部,数据都是采用二进制的形式进行存储、运算、处理和传输的。这主要是因为计算机所使用的电子器件(晶体管)具有两种稳定的状态(导通和截止),正好可以用二进制数的1和0表示。 数制是人们用一组统一规定的符号和规则来表示数的方法。数制通常使用的是进位计数制,即按进位的规则进行计数。在进位计数制中有“基数”和“位权”两个基本概念,如图1.4所示。 基数是进位计数制中所用的数字符号的个数。假设以b为基数进行计数,其规则是“逢b进一”,则称为b进制。例如,十进制的基数为10,逢十进一; 二进制的基数为2,逢二进一。 图1.4数制和位权 在进位计数制中,把基数的若干次幂称为位权,幂的方次随该位数字所在的位置而变化,整数部分从最低位开始依次为0,1,2,3,4…; 小数部分从最高位开始依次为-1,-2,-3,-4…。例如: 任何一种用进位计数制表示的数,其数值都可以写成按位权展开的多项式之和: N=±(an-1×bn-1+ an-2×bn-2+ …+a1×b1+ a0×b0+ a-1×b-1+ a-2× b-2+ …+a-m×b-m) =∑-mi=n-1ai×bi 式中,b是基数; ai是第i位上的数字符号(或称系数); bi是位权; n和m分别是数的整数部分和小数部分的位数。 例如,十进制数1234.567可以写成: 1234.567= 1×103+2×102+3×101+4×100+5×10-1+6×10-2+7×10-3 常用数制及其特点如表1.1所示。 表1.1常用数制及其特点 数制基数数码进位规则 十进制100,1,2,3,4,5,6,7,8,9逢十进一 二进制20,1逢二进一 八进制80,1,2,3,4,5,6,7逢八进一 十六进制160,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F逢十六进一 1. 十进制 十进制是人们日常生活中使用的进制,它有10个数码: 0、1、2、3、4、5、6、7、8、9,逢十进一。任何一个十进制数都可以展开成以10为底的多项式之和: (169)10=1×102+6×101+9×100 2. 二进制 计算机内部采用二进制进行运算、存储和控制。二进制有2个数码: 0、1,每位数逢二进一。任何一个二进制数可按如下规则展开成对应的十进制数: (10110)2=1×24+0×23+1×22+1×21+0×20=22 3. 八进制 由于二进制在表示较大的数时书写不方便,因此计算机中(尤其是在编程语言中)也经常使用与二进制关系密切的八进制及十六进制,它们之间也可以很方便地转换。八进制有8个数码: 0、1、2、3、4、5、6、7,各位数逢八进一。八进制与十进制的转换: (127)8=1×82+2×81+7×80=87 4. 十六进制 十六进制有16个数码: 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,9以上的数码10、11、12、13、14、15分别用A、B、C、D、E、F表示(大小写均可),逢十六进一。十六进制数与十进制的转换: (5FA)16=5×162+15×161+10×160=1530 十进制、二进制、八进制和十六进制数对照表如表1.2所示。 表1.2十进制、二进制、八进制和十六进制数对照表 十进制二进制八进制十六进制 0000 1111 21022 31133 410044 510155 611066 711177 81000108 91001119 10101012A 11101113B 12110014C 13110115D 14111016E 15111117F 16100002010 1.3.2数制转换 计算机内部使用二进制,而人们日常又使用十进制,这就涉及数制之间的转换问题。二进制、八进制及十六进制转换为十进制,按多项式展开即可,见以上示例。下面我们来看看十进制转换为二进制、八进制、十六进制以及二进制、八进制、十六进制之间的转换方法。 1. 十进制转换为二进制 十进制数转换成二进制时,先将十进制分成整数和纯小数两部分,整数部分和纯小数分别转换。例如: (123.45)10=(123)10+(0.45)10 可以预见,转换结果为 (…B3B2B1B0)+(0.B-1B-2B-3B-4B-5…) 1) 整数部分 整数部分的转换用“除2取余”法,将待转换的十进制整数用2除,得到的商再除2,如此反复,直到商为0时止。每次除得的余数按反次序排列(即首先得到的余数为二进制数的最低位,最后得到的余数为二进制数的最高位)即为相应的二进制数。例如: (123)10=(?)2 除2商余数二进制位 123÷2611B0 61÷2301B1 30÷2150B2 15÷271B3 7÷231B4 3÷211B5 1÷201B6 因此(123)10=(1111011)2。 2) 纯小数部分 纯小数部分的转换采用“乘2取整”法,将被转换的十进制纯小数反复乘以2,每次相乘乘积的整数部分若为1,则二进制数的相应位为1; 若整数部分为0,则相应位为0,由高位向低位逐次进行,再用积的纯小数部分乘以2,直到剩下的纯小数部分为0或达到所要求的精度为止。 乘以2积积的整数部分积的纯小数部分二进制位 0.45×20.900.9B-1 0.9×21.810.8B-2 0.8×21.610.6B-3 0.6×21.210.2B-4 0.2×20.400.4B-5 因此,若转换结果保留5位小数,则转换结果为 (0.45)10=(0.01110)2 故 (123.45)10=(1111011.01110)2 2. 十进制转换为八进制 十进制转换成八进制的算法与十进制转换成二进制类似,只是将“除2取余”法改成“除8取余”法、“乘2取整”法改成“乘8取整”法即可。例如: (123.45)10=(?)8 1) 整数部分 除8商余数八进制位 123÷8153O0 15÷817O1 1÷801O2 因此(123)10=(173)8。 2) 纯小数部分 乘以8积积的整数部分积的纯小数部分八进制位 0.45×83.630.6O-1 0.6×84.840.8O-2 0.8×86.460.4O-3 0.4×83.230.2O-4 0.2×81.610.6O-5 因此 (0.45)10=(0.34631)8 (小数部分要求保留5位) 故 (123.45)10=(173.34631)8 3. 十进制转换为十六进制 十进制转换成十六进制的算法与十进制转换成二进制类似,只是将“除2取余”法改成“除16取余”法、“乘2取整”法改成“乘16取整”法即可。需要注意的是,十六进制的10、11、12、13、14、15分别用A、B、C、D、E、F表示。例如: (123.45)10=(?)16 1) 整数部分 除16商余数十六进制位 123÷16711H0 7÷1607H1 因此(123)10=(7B)16。 2) 纯小数部分 乘以16积积的整数部分积的纯小数部分十六进制位 0.45×167.270.2H-1 0.2×163.230.2H-2 0.2×163.230.2H-3 0.2×163.230.2H-4 0.2×163.230.2H-5 因此 (0.45)10=(0.73333)16 故 (123.45)10=(7B.73333)16 4. 二进制与八进制、十六进制间的转换 由于8=23,16=24,所以1位八进制数相当于3位二进制数,1位十六进制数相当于4位二进制数。二进制与八、十六进制间的转换,正是基于这个原理。 1) 二进制转换成八、十六进制 以小数点为界向左和向右划分,小数点左边(整数部分)从右向左每三位(八进制)或每四位(十六进制)一组构成一位八进制或十六进制数,位数不足三位或四位时最左边补0; 小数点右边(小数部