《计算机基础知识课件.pptx》由会员分享,可在线阅读,更多相关《计算机基础知识课件.pptx(191页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、11.1 本章导读 本课程的名称是“计算机程序设计”。程序设计技术是一种具有多领域适用性的基本应用技术。是大学生必修的重要基础课之一。为了能够尽快进入程序设计课程的学习,需要先了解一些基础的计算科学知识,包括计算机基本工作原理、算法设计和数据结构等方面的基本知识。本章主要介绍计算机基本的系统结构,工作原理,数据的存储表示,算法的概念以及程序设计的基本方法。第1页/共191页21.2 计算机系统结构及工作原理 我们现在普遍使用的通用电子数字计算机(简称计算机)是一种现代计算工具。电子计算机最基本的工作特点是人将其启动后能自动进行计算直至得出最终答案。为了具有自动计算能力,需要为计算机设计一套完整
2、的部件,使之除了具有存储数据的功能外,还应能够允许人向机器输入预先编写的指令,然后使机器自动执行这套指令对数据进行计算,最后将计算结果以人能够看到的形式输出。这是对计算机组成结构的基本要求。第2页/共191页3计算机的体系结构冯诺依曼结构1945年,冯诺依曼主持的研究小组发表了“存储程序通用电子计算机方案”EDVAC。这个方案首次提出了“存储程序和程序控制”思想,依据该方案所设计的计算机体系结构也称为冯诺依曼机器模式。第3页/共191页4“程序”的概念 “程序”是指完成一系列操作的指令集合。在冯诺依曼体系结构中,指令是用代表一定操作含义的数字组成,因此能够以数据的方式存储在存储器中。为了区分指
3、令和数据,将指令放置在指定的存储器地址中,而数据的存储地址在指令中给出明确标示或计算方式。程序一旦启动,计算机就能够从指定位置取出指令并执行,在执行中根据数据地址取出数据进行计算,从而不会混淆指令和数据。第4页/共191页5表示数据流 表示控制流图1.1 冯诺依曼计算机结构示意图第5页/共191页61.运算器运算器又称算术逻辑部件(ALU),是进行算术运算和逻辑运算的部件。运算器在控制器的控制下,对取自内存储器的数据进行算术和逻辑运算。算术运算指按照算术规则进行的运算,如加、减、乘、除、求绝对值等;逻辑运算泛指非算术性质的运算,如比较数的大小、数字移位、逻辑加等。在计算机中,各种复杂的运算被分
4、解为一系列算术运算和逻辑运算,由ALU执行。运算器的工作内容是由当前指令的操作码来确定的。第6页/共191页72.控制器 控制器是计算机的控制指挥中心,计算机的神经中枢。它的基本功能是从内存储器中取出指令并对指令进行分析、判断,并根据指令发出相应的各种控制信号,使计算机的有关设备或电子器件有条不紊地协调工作,保证计算机能自动、连续地工作。控制器和运算器合起来称为中央处理器中央处理器(CPU)。CPU是计算机的核心部件。除控制器和运算器外,还包括若干寄存器(register),用来存放运算过程中的各种数据、地址或其他信息。第7页/共191页8CPU中的寄存器(register)寄存器主要分为两类
5、:通用寄存器和专用寄存器。通用寄存器用于临时保存CPU正在操作的数据,包括向ALU提供的数据和ALU的运算结果。专用寄存器:一个是指令指针(IP,也称为程序计数器),用于存放将要执行的下一条指令的地址,当控制器从内存中取出一个指令字节后,IP就自动加1,指向下一条指令。另一个是指令寄存器(IR),用于存放正在执行的指令,或存放根据指令指针中的地址信息从内存储器中取出的指令。第8页/共191页93.存储器存储器(memory)是有记忆能力的部件,用来保存程序和数据。存储器分为内存储器和外存储器两类。内存储器(也称主存储器,简称内存或主存)可以和CPU直接相连,用来存放当前要执行的程序和数据,以便
6、快速向CPU提供信息。内存储器一般采用半导体材料和集成电路制造。冯诺依曼结构中的存储器仅指内存。外存储器(也称辅助存储器,简称外存),一般需要通过特殊接口与CPU连接。外存储器用来存放需要长期保留的程序和数据。存放在外存的程序必须调入内存才能运行。软盘、硬盘和光盘都属于外存储器。第9页/共191页104.输入设备 输入设备(input device)是将程序、命令或数据等信息输入到计算机的装置。输入设备把它们转换成计算机能够识别的形式,存放在内存中。常用的输入设备有鼠标、键盘、扫描仪、数字化仪等。第10页/共191页115.输出设备输出设备(output device)是将计算机处理后的结果(
7、通常在内存)进行输出的设备。输出结果要转换成人们能够接受的形式,例如数据、文字、图形、表格等。常用的输出设备有显示器、打印机、绘图仪等。第11页/共191页12总线在计算机的五大基本部件之外,还需要一个重要部件总线。为了使计算机的各功能部件构成一个可协调工作的系统,必须把它们按某种方式有组织地连接在一起,连接线作为计算机各部件之间传送信息的公共通道,这些特殊的连接线就称为总线(BUS)。在布有总线的电路系统中,信号可以从多个信号源中的任一信号源发出,通过总线到达多个信号接收部件中的任一部件。计算机中有3种不同的总线数据总线、地址总线和控制总线,分别用于传送数据信号、地址信号和控制信号。第12页
8、/共191页13图1.2 总线与各功能部件连接的示意图第13页/共191页14冯诺依曼体系结构的特点(1)计算机硬件设备由存储器、运算器、控制器、输入设备和输出设备五大基本部件组成,并对其基本功能做了规定。(2)计算机内部采用二进制数码来表示指令和数据,每条指令由一个操作码和一个地址码组成,其中操作码表示计算机执行该指令时所做操作的性质,地址码则指出被操作数在存储器中的存放地址。(3)将程序和原始数据存入计算机的主存储器中,程序启动后计算机能够连续、自动、高速地从存储器中取出一条条的指令,加以分析并执行规定的操作。这个方式称为“存储程序存储程序”工作原理。第14页/共191页15图1.3 计算
9、机系统的基本组成 第15页/共191页16计算机中的数据存储体系 机器的设计应尽可能降低其复杂程度使之容易制造。计算机的复杂性取决于数据在机器中的表示模式,或者说一个电子器件能够表示的状态数目决定了数据的表示方法。最容易实现的电子器件状态是2种:正极和负极、高电平与低电平、充电和放电、接通和断开等等。因此计算机中的数据采用状态数为2的电子器件表示,即采用0和1组成的编码模式,其数制为二进制。一个数字0或1称为位(bit),用若干二进制位的组合表示数据、字符或其他媒体信息,这被称为“位模式”。第16页/共191页17二进制数的运算规则 二进制数的加法运算规则只有3种:0+0=0;0+1=1+0=
10、1;1+1=0(进位1)。二进制数位的逻辑运算:数学中的逻辑代数有“假”和“真”(False和True)这2种真值。由于二进制数字0和1恰好对应“假”和“真”,CPU的运算器能够非常容易地实现逻辑运算,从而使计算机具有基于逻辑运算的条件判断能力。逻辑与(AND)、逻辑或(OR)和逻辑非(NOT)这3种运算是最基本的逻辑运算。第17页/共191页183种基本逻辑运算规则ABABABA00001010111001011110第18页/共191页191.主存储器及存储容量的度量 1.RAM:能够被用户程序读写的内存被称为随机存取存储器(RAM)。当RAM采用动态技术制造时,它被称为DRAM(动态随机
11、存取存储器)。DRAM中的每个存储单元由一个晶体管和一个电容器组成。需要刷新才能维持电容的电量。2.SRAM:静态随机存取存储器,每个SRAM存储单元由6个晶体管组成,因而存储密度比DRAM低,这种存储器工作时不需要刷新,且速度比DRAM的速度高得多。在微型计算机中,SRAM常用于高速缓冲存储器,而DRAM用于主存储器。第19页/共191页20存储容量的地址每个存储单元都有一个编码用以确定该单元,改编码成为单元的地址码。地址码的长度(二进制位数)取决于地址线的条数,同时表明了可以访问的存储单元的最大数目。假设一台计算机的地址线有20根,则存储单元的数量为220=1048576。第20页/共19
12、1页21存储容量的度量在计算机中,信息的存储单位常采用位、字节、字等几种量纲。(1)位(bit,缩写为b):二进制数的每一位(“0”或“1”),它是二进制信息的最小单位。(2)字节(Byte,缩写为B):一个字节由8位二进制代码组成,它们从左到右排列为:b7 b6 b5 b4 b3 b2 b1 b0 其中b7 是最高位,b0是最低位。第21页/共191页22图1.4 字节型存储单元的结构第22页/共191页23(3)字(Word):又称计算机字,是可作为独立的信息单位进行运算或处理的若干位的组合,其中所含的二进制数位的个数称为字长。字长一般是字节的整数倍,微型计算机的CPU芯片有16位、32位
13、和64位等规格。存储器的容量一般以字节为单位。常用的计量单位有KB(千字节,1K=210=1024Byte),MB(兆字节,1M=220=1024KB),GB(千兆字节,1G=230=1024MB)等。例如,有20根地址线的内存拥有1MB的存储单元。如果有16兆(16777216)的内存容量,则意味着这台机器有24根地址线。第23页/共191页242.外部存储器(1)固定式磁盘存储器最常用的计算机外部存储器是磁盘。磁盘包括软盘和硬盘。磁道:硬盘的表面的同心圆;柱面:各盘片的同一垂直面上所有的磁道(即具有同一半径的磁道)构成的磁道组。柱面的编号外小内大,成为柱面号;扇区:每个磁道又划分为若干个扇
14、区,每个扇区的大小为512个字节。信息是按扇区存放的,读/写操作以扇区为单位的。第24页/共191页25磁道柱面磁盘盘片控制电路主轴移动臂文件定位表磁头硬盘的基本结构示意图第25页/共191页26硬盘的主要性能指标 容量:硬盘容量=磁头数柱面数扇区数扇区容量 存储密度:存储密度是指单位长度或单位面积磁层表面所存储的二进制信息量,可用道密度和位密度这2个指标来表示。道密度指单位长度内的磁道数目,位密度是磁道单位长度内存放的二进制信息的数目。数据传输率:数据传输率是指单位时间内磁盘与主机之间传送数据的二进制位数或字节数。数据传输率与硬盘的转速和位密度有关。转速指盘片转动的速度,其单位是转/分钟(r
15、/min)。第26页/共191页27 平均存取时间:平均存取时间指从发出读写命令后,磁头从原始位置移动到磁盘上所要求读写的记录位置,并准备写入或读出数据所需要的时间。存取时间由定位时间(也称寻道时间)和等待时间两部分组成,前者是磁头寻找磁道所需的时间,后者是数据所在的扇区转到磁头下所需的时间。cache容量高速缓冲存储器(cache)能有效地提高硬盘的数据传输性能,理论上cache的速度越快越好,容量越大越好。目前硬盘的cache容量一般为256KB或512KB,也有高达8MB或16MB的。第27页/共191页28(2)移动存储器 闪速存储器是在集成电路中构建无数的小容器,以容器的“满”和“空
16、”来表示0和1,闪存的读取时间小于90ns。闪存中微容器里的电子能够保留长达10年以上。目前,许多移动存储器产品采用了基于闪存的技术。闪存盘以闪速存储器为介质,采用USB接口(因此也称其为U盘),体积只有拇指般大小,重量仅15克左右,容量目前一般为2GB4GB,最高可达32GB。它的存储单元可反复檫写100万次,数据可以保持10年以上。第28页/共191页29 由于计算机系统中存在着几种不同的存储器部件或设备,整个存储系统呈现塔式分层结构,如图1.7所示。最上面一层是CPU内部的通用寄存器,用来暂存中间结果(严格地说,寄存器不属于存储器的范畴);第二层是高速缓冲存储器Cache;第三层是主存储
17、器(内存);第四和第五层都是辅助存储器或外部存储器(它们与CPU的通信需要经过专门的接口)。如图1.5所示。存储器的层次结构 第29页/共191页30 图1.5 存储器的层次结构 实际上,计算机运行时的数据流主要工作在两个层面之间:高速缓冲存储器和主存之间,主存和辅存之间,如图1.6所示。前者主要解决存储器系统的速度问题,而后者主要解决存储器的容量问题。第30页/共191页31图1.6 缓存主存层次和主存辅存层次第31页/共191页32计算机的工作原理1.程序、指令和指令系统 2.指令的执行过程第32页/共191页331.程序、指令和指令系统 一条计算机指令由若干二进制位来表示,指令中一般包含
18、操作码和操作数两部分,其基本格式如图1.7所示。其中操作码指明该指令要完成的操作,例如,加法、减法、乘法、除法、取数、存数等。操作数表示操作对象的内容或所在的存储单元地址。图1.7 指令的格式 图1.8 一条加法指令的位模式第33页/共191页34 图1.8是一个简单指令集中的一条16位指令的位模式示意图。如果将图中每个4位分别转换成十进制,即为5726,其中操作码5的含义是做加法,该指令表示将2号寄存器与6号寄存器中的数值相加,和放入7号寄存器中。由于二进制数码序列不易看清,一般用助记符描述指令,如图1.8中的指令,用虚构的助记符可表示为ADD GX,BX,FX。第34页/共191页35按功
19、能分类:数据传送指令:实现数据在不同地点之间的传送,这些不同的地点包括CPU、内存和寄存器。在存储器中,数据被传送至另一地点后,原处的数据仍未消失。数据处理指令:实现对数据进行算术运算和逻辑运算。程序控制指令:实现改变程序执行顺序的功能,如跳转指令、循环控制指令、子程序调用及返回指令。输入输出指令:实现CPU与外部设备之间的数据交换。其他指令:实现对计算机硬件的管理,如中断指令和标志位操作指令。第35页/共191页36一台计算机所能执行的全部指令的集合称为该计算机的指令系统,或称该计算机的机器语言指令系统。不同种类的计算机,其指令系统的指令数目与格式也不同,如80 x86类型的CPU有64条运
20、算指令。但无论哪种类型的计算机,其指令系统都包含有上述5种类型的指令。第36页/共191页372.指令的执行过程计算机执行一条指令的过程可分为以下几个基本步骤:(1)取指令:根据指令指针寄存器IP中的地址,从内存储器中取出一条指令送至指令寄存器IR中。然后IP自动加1,以指向内存的下一条指令。若当前指令是单字节的,则IP指向下一条指令,若当前指令是多字节的,则IP指向本条指令的下一字节。在取指阶段,CPU从内存中取出的内容必定是指令。第37页/共191页38(2)分析指令:由译码器对指令寄存器中的指令进行译码,主要是对操作码部分进行分析处理,将操作信息送往控制器,控制器根据指令的功能产生相应的
21、控制电位信号序列。操作数部分如果含有数据的地址,控制器还要形成相应的实际地址供执行指令时使用。(3)执行指令:由操作控制线路发出完成该操作所需要的一系列控制信号,机器执行该指令所要求的操作,从而完成该指令的功能。对于多字节指令,IP会不断加1,以取出当前指令的后续部分并加入指令的执行过程中。第38页/共191页39(4)一条指令执行完成后,将下一条要执行的指令地址送入IP中,准备进入下一个指令执行周期。这时可能有两种情况发生,若遇一般指令则按顺序执行;若遇转移指令,则将转移地址码送入IP中。在以上几个步骤中,取指令和分析指令的操作,对所有指令来说几乎都一样,而每条指令执行阶段的具体操作根据功能
22、设计而各有不同。第39页/共191页40程序的执行过程 第40页/共191页41 流水线工作方式的指令执行过程 事实上,取指令、分析指令和执行指令这三个步骤分别由不同的功能部件来完成,如果使三个功能部件采用并行方式协调工作,则将使计算机执行程序的速度大大提高。这就是现代计算机大多采用的流水线工作方式。流水线是指这样的一种生产组织形式:将生产过程分成时间上相等或成倍比的若干个工序,每个工序固定在按顺序排列的各个工作场地,加工对象按顺序“流”过工作场地进行加工。第41页/共191页42图1.9 流水线工作方式的指令执行过程 假定取指令、分析指令和执行指令三个功能部件的执行时间都相同,按图1.13所
23、示的协调方式,当第1条指令被取出进入指令分析部件时,取指令部件可从内存储器中取出第2条指令;而当第1条指令进入指令执行部件时,分析指令部件将对第2条指令进行分析,取指令部件又将取出第3条指令。如此往复,即可得到并行工作的效率。第42页/共191页431.3 数制转换、字符编码l 进位计数制l 数值在不同数制之间的转换 l 计算机中的数据表示和存储l 非数值数据的编码第43页/共191页44进位计数制任何一种计数制,都符合以下三个规则:(1)数码个数数码个数:n进制数使用n个数码。十进制含10个数码:09;二进制含2个数码:0,1。(2)进位规则进位规则:n进制逢n进一。十进制为逢十进一;二进制
24、为逢二进一等。(3)每一个数位上数码所具有的权:每一个数位上数码所具有的权:权为n的幂。十进制数码各位的权是以10为底的幂,二进制数码各位的权是以2为底的幂。第44页/共191页45 由于不同位上的权值不同,因此同一数码在不同的位置上,其表示的值也不同。例如十进数926.8,百位上的9表示900,十位上的2表示20,个位上的6表示6,而小数点后的8表示0.8。由此可见,同一数字的值随着其所在位置而异,这种表示法统称为位置表示法。这样,数926.8的值为 9102+2101+6100+810-1其中,102、101、100、10-1称为权。第45页/共191页46进位计数制 对于任何一个十进数N
25、,都可以表示成按权展开的多项式:N=dn10n+dn-110n-1+d1101+d0100+d-1 10-1+d-m10-m =di10i其中,di是09十个数字中的任意一个,m、n是正整数,10被称为十进制数的基数,它是相邻数位的权之比。第46页/共191页47 一般而言,对于用R进制表示的数N(R为任意正整数),可以按权展开为:N=KnRn+Kn-1Rn-1+K1R1+K0R0+K-1 R-1+K-mR-m =KiRi其中,Ki是0,1,(R-1)个数字中的任意一个,m、n是正整数,R是基数。表1.2列出了计算机中常用的四种进位计数制。其中十六进制中的A,B,C,D,E和F分别相当于十进制
26、中10,11,12,13,14和15的值。第47页/共191页48表1.1 计算机中常用的四种进位计数制进位制:进位制:进位制:进位制:二进制二进制二进制二进制八进制八进制八进制八进制十进制十进制十进制十进制十六进制十六进制十六进制十六进制规则规则规则规则逢二进一逢二进一借一当二借一当二逢八进一逢八进一借一当八借一当八逢十进一逢十进一借一当十借一当十逢十六进一逢十六进一借一当十六借一当十六基数基数基数基数R=2R=8R=10R=16数符数符数符数符0,10,1,2,70,1,2,90,1,2,9A,B,C,D,E,F权权权权2i8i10i16i后缀符号后缀符号后缀符号后缀符号 BODH第48页
27、/共191页49在十进制中,如将一个数的每一位同时向左移动1位并且在右端补一个0,则其值增大到原来的十倍;如将一个数的每一位同时向右移动1位并丢弃原来的最右端数字,则其值减少到原来的十分之一。同样,在二进制中,如将数的各位向左移动1位,则其值增大到原来的二倍;反之将数的各位向右移动1位,则其值减少到原来的二分之一。于是,CPU通过移位(shifting)操作实现将一个数乘以2或除以2的运算。第49页/共191页50例如,二进数101011.1在左移1位或右移1位后,其值的变化如下:二进数二进数 值值 101011.1 43.5向左移向左移1 1位位 1010111.0 87向右移向右移1 1位
28、位 10101.11 21.75第50页/共191页51不同数制之间的转换 不同进位制数值之间的数制转换实质上是进行基数的转换。转换所依据的原则是:如果两个数的值相等,则两数的整数部分和小数部分的值一定分别相等。因此,在转换时应对整数部分和小数部分分别进行转换。第51页/共191页521.二进制、八进制和十六进制数转换为十进制数。将一个任意R进制数转换成十进制数可以采用按权相加法。即列出数值的按权数位展开式,然后相加,其和便是相应的十进制数。【例1-1】求与(101011.01)2等值的十进数解:(101011.01)2=125+024+123+022+121+120+0 2-1+12-2 =
29、32+0+8+0+2+1+0+0.25=(43.25)10 第52页/共191页53【例1-2】将十六进制数28F转换成十进数.解:(28F)16=2162+8161+15160 =512+128+15 =(655)10第53页/共191页542.十进制数转换成二进制数、八进制或十六进制数十进制数转换成二进制数要分别对整数部分和小数部分采用不同的方法。整数部分的转换采用除R取余法。设一个十进制整数x已被表 示 成 一 个 二 进 制 数(KnKn-1K1K0)2,其 中 Ki为 0或1(0in),那么x按二进制数的权展开为:x=Kn2n+Kn-12n-1+K121+K020由于展开式的前几项均
30、为2的整数倍,显然第一次做 x/2的商为:Kn2n-1+Kn-12n-2+K120,余数为K0。同样,对上述商再除以2,所得余数便是K1。以此类推,一直进行下去直至商为0,便可得到由各次除法得到的余数组成的二进制数。各数位上的数字分别为Kn,Kn-1,K0,当商等于0时,最后得到的余数即为 Kn。第54页/共191页55【例1-3】把18转换成二进制数。解:2 18 余0(K0)9 余1(K1)4 余0(K2)2 余0(K3)1 余1(K4)0结果为(18)10=(10010)2 这种转换方法称为除2取余法。类似地,十进制整数转换成八进制数时,采用除8取余法;十进制整数转换成十六进制数时,采用
31、除16取余法。2222第55页/共191页56小数部分的转换采用乘R取整法。将一个十进制纯小数x按二进制数的权展开则为:x=K-12-1+K-22-2+K-m2-m将其乘以2后,可得 K-1+(K-22-1+K-m2-m+1)显然整数部分即为K-1。由此可见,转换时应将十进制小数乘2,取乘积的整数部分作为相应二进制小数点后的最高位K-1;反复乘2,依次可得K-2,K-3,K-m,直到乘积的小数部分为0或者小数点后的位数达到精度要求为止。第56页/共191页57【例1-4】将(0.8125)10转换成二进制数。解:0.8125 2 1.6250 1(K-1)21.2500 1(K-2)2 0.5
32、000 0(K-3)2 1.0000 1(K-4)结果为 (0.8125)10=(0.1101)2这种转换方法称为乘2取整法。第57页/共191页58 同样,十进制小数转换成八进制数时,采用乘8取整法;十进制小数转换成十六进制数时,采用乘16取整法。对于既有整数又有小数的十进制数,转换时只需将整数部分和小数部分分别进行转换后,用小数点连接起来即可。【例1-5】将(314)10转换成十六进制数。解:16 314 余A 19 余3 1 余1 0 所以 (314)10=(13A)161616第58页/共191页593.二进制数与八进制数的相互转换二进制数的基数是2,八进制数的基数是8,由于23=8,
33、所以八进制的一位对应于二进制的三位,二进制数与八进制数的互换是十分简便的。二进制数转换成八进制数的方法可以概括为“三位并一位”,即以小数点为基准,整数部分从右至左,每3位一组,最高位不足时补0;小数部分从左至右,每3位一组,最低有效位不足3位时补0。然后,将每组数字改成等值的1位八进制数即可。第59页/共191页60八进制数转换成二进制数的方法可以概括为“一位拆三位“,即把每位八进制数用等值的3位二进制数代替,然后按权位顺序依次连接即可。【例1-6】将(11101.1101)2转换成八进制数。解:0 1 1 1 0 1.1 1 0 1 0 0 3 5 6 4结果为 (11101.1101)2=
34、(35.64)8第60页/共191页614.二进制数与十六进制数的相互转换同样,由于24=16,所以十六进制的一位对应于二进制的四位,二进制数与十六进制数的互换也是十分简便的。二进制数转换成十六进制数的方法可以概括为“四位并一位”,即以小数点为基准,整数部分从右至左,每四位一组,最高位不足时补0;小数部分从左至右,每四位一组,最低有效位不足三位时补0。然后,每组改成等值的一位十六进制数即可。第61页/共191页62 十六进制数转换成二进制数的方法可以概括为“一位拆四位“,即把每位十六进制数用等值的四位二进制数代替,然后按权连接即可。【例1-7】将(65.C4)16转换成二进制数。解:6 5 .
35、C 4 0110 0101 1100 0100结果为 (65.C4)16=(1100101.110001)2第62页/共191页63表1.2各种进位制之间的对应关系十进制十进制二进制二进制八进制八进制十六进制十六进制0 0001 1112 10223 11334 100445 101556 110667 111778100010891001119第63页/共191页64十进制十进制二进制二进制八进制八进制十六进制十六进制10101012A11101113B12110014C13110115D14111016E15111117F16100002010第64页/共191页65计算机中的数据表示和存
36、储在计算机中,所有的数据、指令和符号都是用特定的二进制代码来表示的。我们把一个数在计算机内部表示成的二进制形式称为机器数,原来的数称为这个机器数的真值。机器数具有下列机器数具有下列3 3个特点:个特点:由于计算机设备的限制,机器数有固定的位数,它所表示的数受到计算机固有位数的限制,所以机器数具有一定的范围,超过这个范围便会发生溢出。第65页/共191页66 机器数将其真值的符号数字化。计算机中使用具有两个不同状态的电子器件,它们只能分别表示数字符号“0”和“1”。所以,数的正负号也只能通过0和1来加以区分。通常,用机器数中规定的符号位(一般是一个数的最高位)取0或1分别表示其值的正或负。机器数
37、中依靠格式上的约定表示小数点的位置。第66页/共191页671.数据的符号表示问题 假设数在计算机中存放时用最高位表示其符号,0表示正数,1表示负数。机器数在参与运算时,若将符号位和数值一起进行运算,有时会产生错误的结果。例如,-6+4的结果应为-2,但按上述方法,则运算如下:10000110 -6的机器数 +00000100 4的机器数 10001010 结果为-10 若要考虑符号位的处理,则会使运算变得复杂。为了解决此类问题,在机器数中,用不同的方法来表示负数。第67页/共191页68下面讨论常用的几种机器数表示方法:原码、补码和反码。(1)原码表示法 原码表示法是一种最简单的机器数表示方
38、法。原码表示的规则是:最左边一位表示数的符号,且以“0”表示正号,“1”表示负号;其余各位表示数的大小,即其绝对值。通常用x原表示x的原码。例如,假设机器数的位数是8,则 +73+73原原=01001001 =01001001 73 73 原原=11001001=11001001 +127 +127原原=01111111 =01111111 127 127 原原=11111111=11111111对于真值0而言,可以被认为是+0,也可被认为是0。+0=00000000,0=10000000,所以数0的原码不唯一,有“正零”和“负零”之分。第68页/共191页69(2)补码表示法在讨论补码之前,
39、先介绍模的概念。“模”是指一个计量系统的计数范围。模实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。以众所周知的时钟为例,设当前时钟指向11点,而准确时间应为7点,调整时间的方法有两种。一种方法是将时针倒拨4小时,即11-4=7;另一种方法是将时针顺拨8小时,即11+8=19=12+7=7。由此可见,在以12为模的系统中加8和减4的效果是一样的,即(-4)=(+8)(Mod 12)。这里称-4和+8互补,它们的绝对值相加恰好等于时钟的模12。第69页/共191页70下面引入补码表示法。对于整数而言,若计算机字长为n位,则 x 0 x 2n-1 2n+x
40、2n-1 x 0时,最大值为X补=01111111=+127;而当X0时,绝对值最大为X补=10000000=-27=-128。所以8位整数的表示范围是-128+127。数0的补码表示是唯一的,即 0 补=+0 补=-0 补=00000000对负数而言求其补码有一个简便的方法是:符号位取1,其余各位按其真值取反,然后在它的末位加1。简称“求反加1法”。第73页/共191页74【例1-8】求-36的补码。解:第1步:将-36表示成二进制数-0100100 第2步:符号位取1,其余各位取反得11011011第3步:末位加1,结果为11011100所以-36补=11011100 反之,从补码求真值的
41、方法是:若符号位为0,则符号位后的二进制数就是真值,且为正;若符号位为1,则将符号位后的二进制代码逐位取反,再在末位加1,所得结果为真值,且为负。第74页/共191页75【例1-9】求11110110补的真值。解:第1步:除符号位外,各位取反得10001001第2步:末位加1,结果为10001010所以 真值为(0001010)2,即(10)10根据补码定义,可以证明x 补+y 补=x+y 补x 补y 补=xy 补 这表明,两个补码加减的结果也是补码,而且在运算时,符号位可同数值部分作为一个整体参加运算,如果符号位有进位,则舍去进位。第75页/共191页76【例1-10】设a=4,b=6,请用
42、补码求和方法计算(a-b)。解:因为a 补=00000100,-b 补=11111010 且a-b 补=a 补+-b 补=00000100+11111010=11111110所以(a-b)=-2第76页/共191页77(3)反码表示法 利用“求反加1”的方法可以得到负数的补码。如在上述方法中,只求反而不加1,就直接得到反码表示法。因此,反码定义为:x 0 x2(n-1)(2n-1)+x -2(n-1)x0反码表示很少直接用于计算中,主要被用作真值求补码的一个过渡手段。x反=第77页/共191页78【例1.11】若有二进制代码(10000000)2,求其真值。解:因为机器数有不同的表示形式,所以
43、答案不唯一。下面给出几种可能的结果:无符号整数 其真值为 128整数补码 其真值为 128原码 其真值为 0第78页/共191页792.数据的小数点表示问题对于在数中可能存在的小数点“.”,计算机如何表示呢?在现代计算机中,并不使用硬件设备的状态表示小数点,而是依靠格式上的约定来表示小数点。目前有两种表示方法:定点表示法和浮点表示法。(1)定点表示法所谓定点表示法是约定计算机中所有数据的小数点位置是固定不变的。该位置在设计计算机时已被隐含地规定,因此勿需再用任何状态来明显表示小数点。这样的数被称为定点数,只能处理定点数的计算机称为“定点机”。第79页/共191页80 一般而言,可以把小数点的位
44、置固定在数的任一位置上。但是常用的形式有两种:把小数点位置固定在数的最高位之前,使机器所表示的数都是纯小数;把小数点位置固定在数的最低位之后,使机器所表示的数均为整数。如果用下述矩形表示在计算机中存放一个二进制数的单元,则纯小数0.1010110在定点机中可表示为。1 0 1 0 1 1 0小数点位置(隐含约定)第80页/共191页81如果约定小数点在数的最高位之前,则这种定点数的一般格式为:数符 尾数设尾数有n位,则此定点数值N的范围是|N|0.11111=1-0.00001=1-2-n(共n位)显然|N|大写字母数字字符。所以,只要记住字母“A”,“a”和数字“0”的ASCII码值,就很容
45、易推算出所有英文大小写字母和数字字符的ASCII码值。第87页/共191页883.十进制数的二进制编码表示将每一位十进制数分别表示为二进制编码的形式,称为十进制数的二进制编码,简称二十进制编码。一位十进制数有09共10个数字字符,二十进制编码或BCD(BinaryCoded Decimal)码需要用4位二进制数才足以区分10个不同的数字。然而4位二进制数可以组合成16个不同的码,原则上,可以从这16个码中任意选10个来表示上述数字符号,但实际上只有少数几种方案被采用。最常用的是8421码,它从4位二进制码中按计数顺序选取从0000开始的前10个码分别表示数字符号09。见表1.3。第88页/共1
46、91页89表1.3 8421码十进制数十进制数8421码码00000100012001030011401005010160110701118100091001第89页/共191页90十进制数十进制数8421码码1011121314158421码书写直观,例如十进数1997可写成0001 1001 1001 0111。请注意,8421码形式上像二进制数,但不是真正的二进制数,与(1997)10等值的二进制数是。第90页/共191页914.汉字编码根据汉字处理过程的不同,汉字有多种编码,主要可分为:汉字输入编码、汉字交换码、汉字机内码和汉字字形码。它们在汉字信息处理中的流程如图1.12所示,其中虚
47、线框中的编码是对国标码而言。图1.12 汉字信息处理系统的模型 第91页/共191页92(1)汉字输入编码汉字输入编码是用字母和数字对汉字进行的编码,目的是为了能使用只有字母和数字键的小键盘,将汉字输入计算机。目前汉字输入编码方法已有数百种之多。这些方法大多是按照汉字的字形,或者字音,或者音形结合来对汉字进行编码的。常用的有拼音编码和五笔字型编码等。第92页/共191页93(2)汉字国标码汉字交换码是在不同计算机系统之间进行信息交换使用的编码,也称国标码。它是信息交换用汉字编码字符集 基本集的简称,是我国国家标准总局于1981年颁布的国家标准,编号为GB231280。国标码(基本集)共选取了6
48、763个常用汉字和682个非汉字字符,并为每个字符规定了标准代码。第93页/共191页94国标码由三部分组成:第一部分是字母、数字和各种符号,包括拉丁字母、俄文、日文平假名与片假名、希腊字母、汉语拼音等682个;第二部分为一级常用汉字,共3755个,按汉语拼音排列;第三部分为二级常用字,共3008个,按偏旁部首排列。GB231280信息交换编码表,排成一张9494的图形字符代码表,表2.4是其部分示意。通常将表中的行称为区,列称为位,表中任何一个图形字符的位置可由区号与位号唯一确定。GB231280中的每个图形符号的区位可采用两个字节表示,每个字节用7位二进制编码。以第一字节表示行,第二字节表
49、示列,这就是国标区位码,简称区位码。第94页/共191页95两个字节的区位码中每个字节可表示成一个两位的十进制数,这样一个汉字字符的区位码由4位数码组成,例如汉字“啊”,它的区位码是1601,即位于十进制数的第16区、第01位,对应的二进制编码第一字节为00010000,第二字节为00000001。国标码是信息交换编码的十六进制表示形式,国标码与区位码有简单的对应关系:国标码国标码=区位码区位码+2020H+2020H加2020H的目的是使两个字符都避免与ASCII码的控制字符冲突。仍以汉字“啊”为例,对应的二进制数第一字节为00110000,第二字节为00100001,即它的国标码是十六进制
50、数3021H。第95页/共191页96(3)汉字机内码汉字机内码是汉字处理系统中用来存储、处理、传输汉字用的代码。在西文系统中,没有交换码和机内码之分,每个西文字符的机内码即为用一个字节表示的ASCII码,一般只用其中的7位表示128种字符,最高位为0。汉字系统中的机内码在编码时必须考虑到既能与ASCII码严格区分,又与国标GB231280汉字字符集有简单的对应关系。采用的方法之一是将表示一个汉字的国标码的2个字节的最高位都设置为“1”。第96页/共191页97以汉字“大”为例:国标码为:3473H 对应的二进制数为:00110111,01110011B机内码为:B4F3H 对应的二进制数为: