1、第第1章章 计算机系统概论计算机系统概论1.1 计算机的发展与应用1.2 计算机系统的组成1.3 计算机系统结构关联习题1.1 计算机的发展与应用计算机的发展与应用纵观计算机发展史,我们可以明显地看到计算机的迅猛发展对人类社会的进步所带来的巨大推动作用,尤其是微型计算机的出现和快速普及,极大地开拓了计算机更为广阔的应用领域,并且正潜移默化地改变着人们的生产方式、工作方式、生活方式和学习方式。下面从计算机的硬件和软件两个方面来简单介绍计算机的发展历程。1.1.1 计算机的发展阶段和发展趋势计算机的发展阶段和发展趋势1计算机的发展阶段计算机的发展阶段1)按逻辑部件划分按逻辑部件划分1946年2月,
2、美国宾夕法尼亚大学成功研制了第一台电子计算机,称为“ENIAC”(Electronic Numerical Intergrator and Calculator,电子数字积分器)。它重30t,占地150m2,每小时耗电150kW,其内部采用了18800只电子管和1500个继电器。与当今微型计算机相比,ENIAC相形见绌,所以只能放在博物馆以供展览,但它毕竟是计算机的鼻祖,自诞生之日起,便具有划时代的意义。随着主要电子器件的演变,计算机的发展可划分为以下五个阶段。(1)电子管时代计算机(19461959年)。主要特点:逻辑器件电子管 主 存磁鼓 辅 存磁带 软 件机器语言、汇编语言 应 用科学计
3、算代表机型:IBM 700系列计算机(2)晶体管时代计算机(19591964年)。主要特点:逻辑器件晶体管 主 存磁芯 辅 存磁盘 软 件高级语言、编译系统 应 用科学计算,并已开始应用于数据处理、过程控制代表机型:IBM 7000系列计算机(3)集成电路时代计算机(19641975年)。主要特点:逻辑器件小规模集成芯片 主 存磁芯 辅 存磁盘 软 件高级语言、操作系统 应 用科学计算、数据处理、过程控制代表机型:IBM 360系列计算机、DEC生产的PDP-8小型商用计算机(4)大规模/超大规模集成电路时代计算机(19751990年)。主要特点:逻辑器件大规模/超大规模集成芯片 主 存半导体
4、存储芯片 辅 存磁盘、光盘 软 件高级语言、操作系统 应 用科学计算、数据处理、过程控制,并进入网络应用时代代表机型:微型计算机(5)超级规模集成电路时代计算机(1990年至今)。随着集成电路集成度的进一步提高,出现了极大、超大规模集成电路,也推动着计算机进入了第五个发展阶段。在此阶段,出现了32位、64位微处理器芯片,如Pentium、Athlon 64等,使微机的性能又上了一个台阶。同时,采用大规模并行计算和高性能机群计算技术的超级计算机也得到了迅速发展,如IBM公司的“深蓝”超级并行计算机和我国2004年研制开发的“曙光”超级计算机等。2)按应用特点划分计算机发展的每一个阶段与其应用密切
5、相关,因此按其应用特点可以划分为如下三个阶段。(1)超大、大、中、小型计算机阶段(19461980年)。计算机代替人的脑力劳动,提高了工作效率,解决了较复杂的数学计算和数据处理。(2)微型计算机阶段(19811990年)。随着微型计算机的普及和计算机技术的日新月异,计算机的功能日益强大,应用领域无所不在,无处不用,对世界科技和经济的发展起到了重要的推动作用。(3)计算机网络阶段(1981年至今)。计算机技术与通信技术融合而聚变的网络技术在20世纪80年代以后发展极为迅速,由简单的远程终端,发展到今天遍布全球的因特网,实现了信息资源共享,推动了信息化社会的进程。2计算机的发展趋势计算机的发展趋势
6、随着科学技术的不断进步,未来计算机将会朝着高性能、网络化、个性化等方向发展,主要体现在以下几个方面。1)两极化发展方向当今计算机正朝着微型计算机和巨型计算机方向发展。微型计算机的发展和普及程度标志着计算机应用水平,巨型计算机的发展代表了计算机科学的发展水平。2)智能化计算机智能化计算机采用了人工智能方法和技术,在系统设计中充分考虑了建造知识库管理系统,并根据所存储的知识进行推理和判断。智能化计算机在某种程度上具有模仿人的思维功能,并具有声音和图像识别能力。3)多媒体计算机多媒体计算机采用了多媒体技术,充分考虑到人的听觉、视觉效果,将大量信息用数值、文字、声音、图形、图像、视频等进行展现,从而极
7、大地改善了人们的生活和学习环境。4)网络计算机计算机网络技术因其在压缩时空方面的出色表现而流行于世,已成为现代人们生活中必不可少的组成部分,它正朝着高速化、综合化、智能化的方向发展。5)非冯诺依曼体系结构计算机冯诺依曼(Johe Von Neumman)在1946年提出了“存储程序”的计算机设计方案,人们把按照这一原理设计的计算机称之为冯诺依曼计算机,该计算机“集中顺序控制”的串行机制严重制约了计算机的性能。为进一步提高计算机性能,非冯诺依曼体系结构的计算机理论产生了,并相继出现了“并行处理机”、“神经网络计算机”及“生物晶体计算机”等。1.1.2 计算机的应用计算机的应用随着计算机的普及和计
8、算机技术的日新月异,计算机应用范围从科学计算、数据处理等传统领域扩展到办公自动化、人工智能、电子商务、远程教育等,也涉及到政治、经济、军事、科技以及社会生活的各个方面。归纳起来,计算机的应用体现在以下几个方面。1科学计算科学计算在科学研究和工程技术中遇到的各类数学问题的计算统称为科学计算。科学计算问题复杂、计算量大,有些用人工计算甚至无法完成。例如地图着色的“四色问题”,这需要上百亿次的计算,如果人工计算,一个人即便昼夜不停地算,也需要几万年!又如海域气象预报,如果用人工计算,算出结果时早已失去了实际意义。在工程预算方面,为选择一个理想的方案,往往需要计算几十个甚至上百个方案,只有使用计算机才
9、能很好地解决上述问题。2数据处理数据处理数据处理是指对数据进行收集、分析和加工等。据统计,世界上70%以上的计算机主要用于数据处理,因此,计算机不再是传统意义上的计算工具了,它已成为数据处理领域最强有力的工具,被广泛用于信息传递、情报检索、企事业管理、金融、物流、办公自动化等。3实时控制实时控制实时控制又称过程控制,要求及时地检测和收集被控对象的有关数据,并能按最佳状态进行自动调节和控制。利用计算机可以提高自动控制的准确性。实时控制广泛应用于冶金、机械、纺织、化工、电力等行业中。在军事上,导弹的发射、先进的防空系统等现代化军事设施通常都是由计算机构成的系统控制的。例如利用卫星定位系统控制导弹的
10、实际飞行轨道,直接袭击目标,其命中率几乎接近100%;美国在海湾战争和伊拉克战争中,计算机实时控制技术发挥了巨大的作用。4计算机辅助系统计算机辅助系统计算机辅助设计(Computer Aided Design,CAD)是人们借助计算机进行设计的一项专门技术。它首先按照设计任务书的要求提出设计方案,然后进行各种方案的比较,确定产品结构、外形尺寸、材料选择,进行模拟组装,再对模拟组装设备进行各种性能测试,根据测试结果进行修正,最后设计出产品;产品设计完成后再将其分解为零件、分装部件,并给出零件图、分装部件图、总体装配图等。上述全部工作都由计算机完成,大大降低了产品的设计成本,缩短了产品设计周期。因
11、此,CAD技术广泛应用于航空、制造、建筑及微电子技术等方面。计算机辅助制造(Computer Aided Manufacturing,CAM)是利用计算机代替人去完成制造过程的相关工作,包括生产工艺控制、物料流控制、生产过程控制与仿真、质量控制与检测。目前人们将数控、物料流控制及储存、机器人、柔性制造、生产过程仿真等计算机相关控制技术统称为计算机辅助制造。利用计算机参与大脑的辅助工作是一个不断开拓的新领域,计算机辅助工艺规划(Computer Aided Process Planning,CAPP)、计算机辅助工程(Computer Aided Engineering,CAE)等得到越来越广泛
12、的应用。5人工智能人工智能人工智能研究如何让计算机模仿人类的高级思维活动。该领域是近年来重点开发的新兴领域,有着广阔的应用前景,被成功地用于机器人的研制和各类专家系统的开发,以及智能翻译系统、语音图像识别、密码分析、指纹鉴定等领域。6远程教育远程教育Internet和WWW技术的发展带来了教育事业的大变革,日渐兴起的远程教育使教学资源通过互连网穿越时空,使学生接受教育可以不受时间、空间和地域的限制。在全球的任何一个角落,学生通过网络自由学习,他们可以获得一流老师的指导,还可以向世界最权威的专家请教,并且可以从世界的任何角落获得最新的信息和资料。7电子商务电子商务电子商务是指以电子形式进行的商品
13、交易活动和服务。电子商务以其公平、快捷、方便、高效、中间环节少、24小时交易和服务等巨大优势赢得了人们的青睐。短短几年时间,电子商务便得到了突飞猛进的发展,已形成一股不可阻挡的潮流,改变着整个未来世界的面貌,推动着全球经济一体化的进程。1.2 计算机系统的组成计算机系统的组成一个计算机系统是由硬件和软件两大部分组成的。硬件是计算机系统的物质基础,没有硬件,再好的软件也无法运行;没有强有力的硬件支持,就不可能编制出高质量、高效率的软件;没有好的硬件环境,一些先进的软件也无法运行。同样,软件是计算机系统的灵魂,没有软件,再好的硬件也毫无用途,犹如一堆废物;没有高质量的软件,硬件也不可能充分发挥其效
14、率。1.2.1 计算机硬件系统计算机硬件系统计算机的硬件系统由输入设备、输出设备、运算器、控制器和存储器五大部分组成,其中运算器和控制器是计算机的核心,统称为中央处理单元(Central Processing Unit,CPU)。1输入设备输入设备(Input Device)输入设备用来向计算机输入程序或原始数据,可分为字符输入设备、图形输入设备、语音输入设备等。常用的输入设备有键盘、鼠标、扫描仪、光笔等。2输出设备输出设备(Output Device)输出设备用来输出计算机的处理结果及程序,处理结果可以是数据、字符、表格、图形等。常用的输出设备有显示器、打印机、绘图仪等。3运算器运算器(Ar
15、ithmetic Logic Unit,ALU)运算器是对数据进行运算的部件,其主要功能是对二进制数据进行算术运算(加、减、乘、除)和逻辑运算(与、或、非、移位),故又称为算术逻辑单元。4控制器控制器(Controller)控制器是整个计算机的控制中心,其功能是控制计算机各个部件自动地协调工作,具体而言,控制器的功能包括顺序控制、操作控制和时间控制。顺序控制是对程序中指令执行顺序的控制,即如何保证计算机执行完一条指令后能够正确地取下一条指令并执行;操作控制是指计算机在执行一条指令时怎样产生这条指令所需的所有控制信号;时间控制是将指令所需的所有控制信号按照一定的时间顺序发送给相应部件,控制各个部
16、件去完成相应动作,进而实现指令的功能。5存储器存储器(Memory)存储器用来存放程序和数据,在控制器的控制下,可以与输入设备、输出设备、运算器、控制器等进行信息交换。计算机中的存储器分为三类:主存储器、辅助存储器和高速缓冲存储器。主存储器和高速缓冲存储器统称为内存储器,简称内存,由半导体存储器构成,它可以被CPU直接访问;辅助存储器又称为外存储器,简称外存,它不能被CPU直接访问。1.2.2 计算机软件系统计算机软件系统计算机系统中各种软件的有机组合构成了计算机软件系统,基本的软件系统包括系统软件和应用软件两大类。1系统软件系统软件1)操作系统操作系统是系统软件的核心,负责管理和控制计算机的
17、硬件资源、软件资源和程序的运行,具体包括并发控制、内存管理、进程调度、I/O及文件管理等,它是用户与计算机之间的接口,提供了软件的开发环境和运行环境。2)语言处理程序由于计算机本身只能识别和处理用二进制的“0”或“1”形式表示的机器语言,因此任何用其他语言编写的程序都必须翻译为机器语言程序后才能由计算机去执行和处理。语言处理程序就是完成这种翻译工作的程序,其翻译方式有两种:一种称为解释,通过解释程序对用程序设计语言编写的源程序边解释边执行;另一种称为编译,通过编译程序将源程序全部翻译为机器语言的目标程序后再执行。3)数据库管理系统数据管理系统被广泛应用在信息处理、情报检索和各种管理系统中,极大
18、地方便了用户根据需要建立数据库,查询、显示、修改数据库的内容,打印各种表格等。4)分布式软件系统分布式软件系统包括分布式操作系统、分布式编译系统、分布式数据库系统、分布式算法及软件包等,主要用于分布式计算环境、管理分布式计算资源、控制分布式程序的运行、提供分布式程序开发与设计工具等。5)网络软件系统网络软件系统包括网络操作系统、网络协议、通信软件、网络应用程序等,支持网络活动和数据通信。人类借助计算机网络这个平台实现远程教育、网络聊天、视频点播、电子邮件、电子商务等。6)服务程序服务程序是指为方便用户使用和维护计算机所编制的程序。这类程序包含的内容很广泛,如装入程序、编辑程序、调试程序、诊断程
19、序等,一些通用的应用软件也可以称为服务程序,如文字处理程序、表格处理程序、图形处理程序等。2应用软件应用软件应用软件是指用户为解决某个应用领域中的各类问题而编写开发的程序。由于计算机的应用极其广泛,所以应用软件种类繁多、内容丰富。目前,应用软件正向标准化、集成化方向发展,许多通用的应用软件根据其功能组成不同的应用软件包,以方便用户选择使用。1.2.3 计算机系统的层次结构计算机系统的层次结构由上述内容可知,计算机是一个硬件与软件相结合的整体,对于不同的应用、不同的对象、不同的设计者,计算机的复杂程度各不相同,从而使计算机具有了不同的属性。为了使计算机硬件与软件之间、系统与使用者之间更好地协调与
20、配合,以便构成合理、高效的计算机系统,人们提出了计算机系统层次结构。该结构从下至上可划分为如下五层,如图1-1所示。图1-1 计算机系统层次结构示意图1微程序设计层微程序设计层该层可以进行微程序设计,由机器硬件直接执行微指令编写的微程序。2指令系统层指令系统层该层可以进行机器语言程序设计,该程序由第一层的微程序负责解释执行。3操作系统层操作系统层该层由操作系统程序实现。操作系统程序由机器指令和广义指令组成,广义指令是对操作系统定义和解释的软件指令,因此,此层属于混合层。4汇编语言层汇编语言层该层可以进行汇编语言程序设计,在软件上需要汇编程序的支持。5高级语言层高级语言层该层是面向用户的,可以进
21、行高级语言程序设计,软件上需要各种高级语言编译程序的支持。由图1-1可以看出不同层次之间满足如下关系:上一层是在下一层的基础上实现的,其功能更强大,更接近于人们解决问题的思维方式和处理问题的具体过程,对使用人员更方便。在使用这一层提供的功能时,不必关心下一层的实现细节;下一层是实现上一层的基础,更接近计算机硬件实现的细节,实现的功能相对简单,人们使用这些功能感到更困难一些。在实现当前层的功能时,可能尚无法了解其上一层的目标和将要解决的问题,也不必理解其下一层实现中的有关细节问题,只要使用下一层所提供出来的功能来完成本层次的功能处理即可。采用这种分层次的方法来分析和解决某些问题,有利于简化处理问
22、题的难度,在某一段时间处理某一层中的问题时,只需集中精力解决当前最需要关心的核心问题即可,而不必牵扯各上下层中的其他问题。1.3 计算机系统结构计算机系统结构1.3.1 传统冯传统冯诺依曼计算机系统结构诺依曼计算机系统结构传统冯诺依曼计算机系统结构如图1-2所示。其硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。特点是以运算器为中心,采用存储程序原理,将编写好的程序预先存储到存储器中,然后启动系统自动执行程序。构成程序的指令是串行执行的,在控制器的控制下自动地、连续地从存储器中依此取出指令并进行分析和执行。存储器是按顺序的一维线性空间,是按地址访问存储器的。指令和数据采用二进制形
23、式。图1-2 传统冯诺依曼计算机系统结构框图1.3.2 现代计算机系统结构现代计算机系统结构传统冯诺依曼计算机系统结构存在着很多缺点:首先是CPU与存储器之间的瓶颈和串行执行指令都会严重影响CPU功效的发挥;其次是高级语言与机器语言的巨大差异会带来较为繁重的编译工作;再者是较复杂的数据结构导致必须使用地址映射才能解决。故以CPU为中心的传统冯诺依曼计算机系统结构已不能适应计算机发展的需要,甚至会影响计算机的性能,因此,现代计算机系统结构应运而生,新的计算机技术不断涌现。图1-3所示是以存储器为中心的现代计算机系统结构。与传统冯诺依曼计算机相比,现代计算机系统结构的不同主要体现在以下三个方面:第
24、一,现代计算机系统结构以存储器为中心,I/O设备与CPU可以并行工作,进一步改善了系统的性能;第二,现代计算机采用先行控制技术和流水线技术,传统的串行执行程序改变为并行,从而提高系统作业的吞吐量;第三,现代计算机中的存储器采用多体交叉存储器,可以在一个存储器访问周期中同时对多个存储单元进行访问,实现多字的一次性存取,增加了存储带宽。图1-3 现代计算机系统结构框图关关 联联 习习 题题1.1 冯诺依曼计算机由哪几个部分组成?各部分的功能是什么?1.2 计算机的发展经历了哪几个时代?计算机有哪些方面的应用?1.3 传统计算机系统结构的特点是什么?现代计算机系统结构为什么以存储器为中心?1.4 解
25、释下列术语:计算机系统、系统软件、计算机系统的层次结构、硬件、软件微处理器、机器字长1.5 选择题。(1)1946年美国推出的世界上第一台计算机称为()。A.ENIAC B.UNIVAC-C.ILLIAC-D.EDVAC(2)完整的计算机系统包括两大部分,它们是()。A.运算器和控制器 B.主机与外设C.硬件与软件 D.硬件与操作系统(3)现代计算机系统结构是以()为中心的。A.运算器 B.控制器C.存储器 D 寄存器1.6 填空题。(1)CPU主要包括_和_两部分。(2)计算机系统的硬件包括_、_、_、_、_等五大部分。(3)从软件和硬件的交互界面看,计算机层次结构包括_和_两大部分。第第2
26、章章 计算机中数据的表示计算机中数据的表示2.1 进位计数制及其相互转换2.2 定点数的表示2.3 浮点数的表示2.4 非数值数据的表示2.5 数据校验码关联习题 2.1 进位计数制及其相互转换进位计数制及其相互转换2.1.1 进位计数制进位计数制进位计数制是一种按进位进行计数的制式。在日常工作与生活中,我们习惯使用十进制数,而计算机内部只能识别二进制数,但在程序设计时,数据往往用十进制数或十六进制数表示,而很少用二进制数,因为用二进制数表示数据或地址时,位数太长,书写不方便,易出错。进位计数制具有以下两方面特征:基数R(Radix):是指进制数中数码所允许取值的个数,且计数规则是“逢R进一”
27、。位权W(Weight):是指基数R的i次幂(Ri),表示进制数中第i位的位权。1十进制数十进制数(Decimal)十进制数是我们日常工作生活中最常用的数,数中的任一数码di0,1,2,9,因此十进制数的基数为10,且逢十进一;十进制数的位权为10i。任何一个十进制数都可以按下式写成一个按权展开的多项式和的形式:D=dndn-1d1d0.d-1d-m =dn10n+dn-110n-1+d1101+d0100+d-110-1+d-m10-m=di10i(2-1)十进制数的后缀为D,可省略。如78D、179.26D可写做78、179.26。mni2二进制数二进制数(Binary)二进制数中的任一数
28、码bi0,1,因此二进制数的基数为2,且逢二进一;二进制数的位权为2i。任何一个二进制数都可以按下式写成一个按权展开的多项式和的形式:B=bnbn-1b1b0.b-1b-m =bn2n+bn-12n-1+b121+b020+b-12-1+b-m2-m+b-m2-m =bi2i (2-2)二进制数的后缀为B,如1001B、10011101.1101B。mni3十六进制数十六进制数(Hexadecimal)十六进制数中的任一数码hi0,1,2,9,A,B,C,D,E,F,因此十六进制数的基数为16,且逢十六进一;十六进制数的位权为16i。任何一个十六进制数都可以按下式写成一个按权展开的多项式和的形
29、式:H=hnhn-1h1h0.h-1h-m=hn16n+hn-116n-1+h1161+h0160+h-116-1+h-m16-m =hi16i(2-3)mni十六进制数的后缀为H,如23AH、9C78.1B3H等,AF相当于十进制数的1015。为了区分十六进制数和标识符(标号、变量等),当十六进制数首位为AF时,其前必须加“0”,如0F08H、0C57.2H。2.1.2 进位计数制的相互转换进位计数制的相互转换1二进制数与十进制数的转换(1)二进制数转换为十进制数。直接按式(2-1)展开并求和即可。【例例2-1】将101110.101B转换为十进制数。解解:101110.101B=125+0
30、24+123+122+121+020+12-1+02-2+12-3=46.625(2)十进制数转换为二进制数。十进制数转换为二进制数的方法有两种:直接法和查表法。直接法:对于整数部分采用“除2取余法”,直到商为零,而余数(由低位到高位)即为转换成的二进制数整数部分;对于小数部分采用“乘2取整法”,而积的整数部分(由高位到低位)即为转换成的二进制数小数部分。最后将转换结果合起来便得到相应的二进制数。【例例2-2】将25.696D转换为二进制数。解解:对整数部分,采用“除2取余法”,计算如下:因此 25D=11001B对于小数部分,采用“乘2取整法”,计算如下:因此0.696D0.10110B所以
31、25.696D11001.10110B查表法:利用十进制与二进制数对照表,把十进制数分解成2i多项式和的形式,然后查表求得对应的二进制数。十进制转换为二进制数对应关系如表2-1所示。表表2-1 十进制数与十进制数与2的整次幂之间的对应关系的整次幂之间的对应关系具体方法:把十进制数(整数和小数)分解成2的整次幂项的和,对于出现2的整次幂项相应的位置数码取“1”,否则取“0”。【例例2-3】将133.625D转换为二进制数。解:133.625D=128+4+1+0.5+0.125=27+22+20+2-1+2-3 =10000101.101B2二进制数与十六进制数之间的转换二进制数与十六进制数之间
32、的转换由于四位二进制数的编码与一位十六进制数的数码之间存在着一一对应的关系,如表2-2所示,因此,二进制数与十六进制数之间的转换十分简单、方便。表表2-2 二进制数与十六进制数之间的对应关系二进制数与十六进制数之间的对应关系(1)二进制数转换为十六进制数。以小数点为分界线,分别向左、向右按四位进行分组,不足四位者,在最前面或最后面补0,使之成为四位,然后,每四位按表2-2的对应关系用一位十六进制数来表示。【例例2-4】将1111000111.10011B、110110001101B分别转换为十六进制数。解解:1111000111.10011B=0011 1100 0111.1001 1000B
33、=3C7.98H110110001101B=1101 1000 1101B=D8DH(2)十六进制数转换为二进制数。每一位十六进制数按表2-2的对应关系转换成四位的二进制数即可,小数点位置不变。【例例2-5】将3F.75H转换为二进制数。解解:3F.75H=0011 1111.0111 0101B=111111.01110101B 3十进制数与十六进制数之间的转换十进制数与十六进制数之间的转换(1)十六进制数转换为十进制数。直接按式(2-3)展开并求和即可。【例例2-6】将7B9.62H转换为十进制数。解解:7B9.3CH=7162+11161+9160+316-1+1216-2=1977.2
34、34375D(2)十进制数转换为十六进制数。采用类似十进制数转换为二进制数的方法,对于整数部分采用“除16取余法”,直到商为零,而余数(由低位到高位)即为转换成的十六进制数整数部分;对于小数部分采用“乘16取整法”,而积的整数部分(由高位到低位)即为转换成的十六进制数小数部分。最后将转换结果合起来便得到相应的十六进制数。这种方法因乘、除16比较复杂,一般采用下面的间接方法。【例例2-7】将105.75D转换为十六进制数。解解:105.75D=1101001.11B=01101001.1100B=69.CH2.2 定点数的表示定点数的表示2.2.1 符号的表示符号的表示计算机本身无法识别数据的符
35、号,即正号(+)和负号(-),为了让计算机能够识别数的符号,必须用“0”和“1”来表示。因此规定:数据字的最高位为符号位,并且用“0”表示正(+),用“1”表示负(-)。于是一个数据字的书写形式和机器内的存储形式存在差异,为了区别这种不同,我们把书写形式(正、负符号加绝对值)的数据称为真值,机器内的存储形式(符号位加二进制数值)的数据称为机器数。一个数据的机器数究竟采用多少位表示,与机器的字长有关,若机器的字长是16位,则表示数据的机器数也是16位。机器数有一定的长度限制,故相应的真值便会存在一定的范围要求,以8位机为例,8位的机器数相应的真值范围为-128+127。2.2.2 小数点的表示小
36、数点的表示数据中的小数点在计算机中有两种表示方法,即定点表示法和浮点表示法。1定点表示法定点表示法定点表示法所表示的数据为定点数。定点数指小数点在数中的位置是固定不变的。因此,计算机中数的小数点不用表示,或者隐含表示,它不占用存储空间。下面以16位机为例来说明定点表示法。1)定点整数小数点被固定在数值位的最低有效位之后,其格式如下:2)定点小数小数点被固定在符号位与尾数之间,其格式如下:定点整数表示的数只能是整数,而定点小数所表示的数只能是小数。在本书中,我们更侧重于定点小数。2浮点表示法浮点表示法定点表示法难以表示数值很大或很小的数据,为了表示更大范围的数据,数学上通常采用科学计数法,即将数
37、据表示成三部分:第一部分表示数据的符号;第二部分表示数据的有效值;第三部分表示数据中的小数点位置。改变了第三部分的数值,相当于改变了小数点的位置,这种表示小数点的方法称为浮点表示法。浮点表示法所表示的数据是浮点数,浮点数x通常表示为x=(1)SMRe其中:S(Sign)符号,0表示正(+),1表示负(-);M(Mantissa)尾数,为定点小数,表示浮点数x的有效数字,决定浮点数的精度;e(exponent)阶码,为定点整数,表示浮点数x中小数点的实际位置,是影响浮点数大小的主要因素,即它决定了浮点数的表示范围;R(Radix)基数,是一个系统中约定的常数,通常取值为2。由于R是一个常数,所以
38、浮点数在计算机中的存储形式为S、E、M,E是阶码的移码形式。由此可见,浮点数的表示又归结到定点整数和定点小数表示问题。关于浮点数的表示更详细的内容将在2.3节中讨论。2.2.3 机器数形式机器数形式对于数据定点表示的符号问题,计算机应如何处理符号位?符号位能否同数值位一样参加运算?为了妥善处理这个问题,下面以n位机为例,介绍几种定点数的机器数形式(若机器数为n位,其中符号位占1位,数值位占n-1位,而小数点隐含)。1原码原码原码是一种最简单、最直观的机器数表示形式,它与真值的形式最为接近。1)原码的定义设x为n位的二进制数据,式(2-4)和式(2-5)分别给出了x为定点小数0.x1x2xn-1
39、和x为定点整数x1x2xn-1的原码定义。定点小数原码的定义:x原=|x|1x1x0 x+(1-2-(n-1)-(1-2-(n-1)x0(2-4)定点整数原码的定义:x原=xxn 120 x+(2n-1-1)-(2n-1-1)x0(2-5)【例例2-8】已知二进制数的真值x,求x原。x=+0.0010110 x=-0.0010110 x=+00010110 x=-00010110解解:由定义可得 因为x0,所以x原=x=0.0010110 因为x0,所以x原=1-x=1.0010110 因为x0,所以x原=x=00010110 因为x0,所以x原=27-x=100101102)原码所表示的数据
40、大小以n位定点小数为例,分析原码所表示的数据范围,如下所示:n位定点正小数的原码0.00 0+00.11 1+(1-2-(n-1)n位定点负小数的原码1.00 0-01.11 1-(1-2-(n-1)所以,n位定点小数的原码所表示的数据范围为-(1-2-(n-1),+(1-2-(n-1)。0的原码形式有两种:+0的原码为0.00 0,-0的原码为1.000。3)原码的运算特点(1)原码的移位。原码移位规则:符号位保持不变,数值位进行左移或右移,移出后出现的空位进行补0。【例例2-9】已知以下两个x原,求2x原、x原。x原=0.0101001 x原=1.0101001解解:2x原=0.10100
41、10 x原=0.0010100 2x原=1.1010010 x原=1.0010100 2121(2)原码的加减运算。原码的加减运算较复杂,它不仅要判断两个数的符号,确定是进行加法还是进行减法运算,还要比较两个数的绝对值大小来决定运算结果的符号。可见,原码不便于进行加减运算,对原码进行符号位处理的硬件较复杂。为了简化运算,人们提出了机器数的补码形式,从此,不再分别处理符号位和数值位,而把符号位作为数值的一部分参与运算,并能将减法运算转换成加法运算,从而简化了硬件及结构,降低了成本。2补码补码1)互补数在计数制中,为了简化计数,常采用一种计满归零的方法。例如钟表的计时,计满12归0,即12点=0点
42、,于是有:13点=1点,14点=2点,23点=11点,24点=0点。因此,钟表是以12为模的计数方式,其数学表达式为12=0 (mod 12)对于钟表的表盘,若时针指向12点,顺时针方向拨时针8格,即表示的时间为8点,而按逆时针方向拨时针4格,表示的时间仍为8点,因此,两种不同方向的拨法其结果是一样的,于是,8和-4是模12的互补数,记为-4=8 (mod 12)。对于任意一个数x,若模为M,则x补可由下式进行计算:x补=M+x (mod M)(2-6)由式(2-6)可知:(1)当x0时,M+xM,把M丢掉,x补=x,即正数的补数等于它本身;(2)当x0时,x补=M+x=M-|x|即负数的补数
43、等于模与该数绝对值之差。【例例2-10】对于二进制数x,求在模M=2的条件下的x补。x=+0.0101001 x=-0.0101001解解:因为x0,所以x补=2+x=x=0.0101001 因为x0,所以x补=2+x=2-|x|=2-0.0101001=1.1010111 2)补码的定义补码实际上是对模的补数,由于机器字长的限制,数据在计算机中的运算是有模运算。设x为n位二进制数据,式(2-7)和式(2-8)分别给出了x为定点小数0.x1x2xn-1和x为定点整数x1x2xn-1的补码定义。定点小数补码的定义:x补|x|1x2x0 x+(1-2-(n-1)-1x0(mod 2)(2-7)定点
44、整数补码的定义:x补x2xn0 x2n-1-1-2n-1x0(mod 2n)(2-8)【例例2-11】已知以下x,求x补。x=+0.0010110 x=-0.0010110 x=+00010110 x=-00010110解解:由定义可得因为x0,所以x补=x=0.0010110因为x0,所以x补=28+x=1.1101010因为x0,所以x补=x=00010110因为x0,所以x补=28+x=11101010 3)补码所表示的数据大小以n位定点小数的补码为例,分析补码所表示的数据范围,如下所示:所以n位定点小数的补码所表示的数据范围为-1,+(1-2-(n-1)。小数0的补码形式只有一种:+0
45、补=0.00 0,-0补=2+0.000=0.00 0。4)补码的运算特点(1)x补的移位。补码的移位规则:补码左移时,符号位保持不变,数值位进行左移,最低位出现的空位进行补0;补码右移时,符号位保持不变,数值位进行右移,最高位出现的空位填补符号位。【例例2-12】已知以下x补,求2x补和x补。x补=0.0101001 x补=1.0101001解解:2x补=0.1010010 x补=0.0010100 2x补=1.1010010 x补=1.00101002121在补码左移过程中,注意不要把高位的数值位移出,否则将会出错。例如,将8位定点正小数补码x补=0.1010011进行左移时,需要将最高数
46、值位的1移出,如果将1移入符号位,正数的补码变成了负数的补码,造成符号出错;如果将1丢掉,又会失去最高位的有效数值而导致出错。同理,对于8位定点负小数补码x补=1.0010011进行左移时,也会出现同样的错误。(2)x补与x原的转换。若x0,则x原=x补。若x0,则将x原除符号位以外的各位取反后,再在最低位上加1,即得到x补;反之,将x补除符号位以外的各位取反后,再在最低位上加1,即得到x原。【例例2-13】已知以下x原,求x补。x原=0.0010110 x原=1.0010110 x原=00010110 x原=10010110解解:由定义可得 因为x0,所以x补=x原=0.0010110 因为
47、x0,所以x补=1.1101010 因为x0,所以x补=x原=00010110 因为x0,所以x补=11101010 从【例2-13】的结果我们还可以看出以下规律:当x0时,保持原码的符号位不变,从原码的最低位开始向高位扫描,在遇到第一个1之后,保持该位1和比它低的各位不变,将其余位取反,即得到x原对应的补码。【例例2-14】已知以下x补,求x原。x补=0.0010110 x补=1.0010110 x补=00010110 x补=10010110解解:由定义可得 因为x0,所以x原=x补=0.0010110 因为x0,所以x原=1.1101010 因为x0,所以x原=x补=00010110 因为
48、x0,所以x原=11101010(3)x补与-x补的关系。已知x补求-x补称为对x补求补或变补。其规则是:将x补的各位取反(包括符号位),然后在最低位加1,即得到-x补;反之亦然。【例例2-15】已知以下x补,求-x补。x补=0.0010110 x补=1.0010110 x补=00010110 x=10010110解解:由定义可得-x补=1.1101010-x补=0.1101010-x补=11101010-x补=01101010 3反码反码反码实质上是一种特殊的补码,其特殊性在于反码的模比补码的模小2n-1。1)反码的定义设x为n位的二进制数据,式(2-9)和式(2-10)给出了x为定点小数0
49、.x1x2xn-1和x为定点整数x1x2xn-1的反码定义。定点小数反码的定义:xxxn)22()1(反0 x+(1-2-(n-1)-(1-2-(n-1)x0 (2-9)定点整数反码的定义:xxxn)12(反0 x2n-1-1-(2n-1-1)x0(mod(2-2-(n-1)(mod(2n-1)(2-10)【例例2-16】已知以下x,求x反。x=+0.0010110 x=-0.0010110 x=+00010110 x=-00010110解解:由定义可得 x反=0.0010110 x反=1.1101001 x反=00010110 x反=111010012)反码所表示的数据大小以n位定点小数为例
50、,分析反码所表示的数据范围,如下所示:所以n位定点小数的反码所表示的数据范围为-(1-2-(n-1),+(1-2-(n-1)。小数0的反码形式有两种:+0的反码为0.00 0,-0的反码为1.11 1。4移码移码移码通常用来表示浮点数的阶码e。我们知道阶码是整数,若采用定点整数补码形式表示,补码的符号位可以作为数值位,这样一来,负数补码的值总大于正数补码的值,在进行对阶时,需要比较两个浮点数的阶码大小。因为比较起来不太直观和方便,因此人们提出了移码形式。浮点数阶码e的移码形式记为“E”。移码E实质上是将阶码e的真值映射到一个正数域,这样移码E的大小可以直观地反映出真值的大小,便于比较。若阶码e