第一部分计算机基础知识
计算机是20世纪最伟大的科学技术发明之一,它的应用已深入到人类社会的各个领域,成为科学研究、工农业生产和社会生活中不可缺少的重要工具。越来越多的人需要学习和掌握计算机基础知识和操作技能,因此,具有一定的计算机知识和熟练的操作技能已经成为很多单位考核员工的标准之一。
任务1认识计算机系统
任务描述
计算机是现代办公、学习和生活的常用工具,初入大学的小王同学,迫切需要认识它,首次接触计算机不知道从何下手,本案例就是一个从无到有的开始,让他对计算机有一个初步的了解,为以后的学习工作打下基础。
任务目标
◆了解计算机的发展、分类、特点、性能指标和应用领域。
◆掌握计算机系统组成及基本工作原理。
◆熟练掌握计算机中信息的表示方法与数制间的转换。

知识介绍
一、 计算机的概念
计算机(Computer)全称电子计算机,俗称电脑,是一种能够按照程序运行,自动高速地处理海量数据的现代化智能电子设备,常见的计算机如图1.1所示。它所接收和处理的对象是信息,处理的结果也


图1.1电子计算机

是信息。计算机常见的形式有台式计算机、笔记本电脑、大型计算机等,较先进的计算机有生物计算机、光子计算机、量子计算机等。

计算机对人类的生产活动和社会活动产生了极其重要的影响,并以强大的生命力飞速发展。它的应用领域从最初的军事科研应用扩展到目前社会的各个领域,已形成了规模巨大的计算机产业,带动了全球范围的技术进步,由此引发了深刻的社会变革。计算机已遍及学校、企事业单位,进入寻常百姓家,成为信息社会中必不可少的工具。它是人类进入信息时代的重要标志之一。

二、 计算机的发展历程
1. 计算工具发展简述
人类最初用手指进行计算,用手指进行计算虽然很方便,但计算范围有限,计算结果也无法存储。于是人们改用绳子、石子等作为工具来延伸手指的计算能力。最原始的人造计算工具是算筹,公元前5世纪,中国人发明了算盘。




17世纪,欧洲一批数学家就已开始设计和制造以数字形式进行基本运算的数字计算机。1642年,法国数学家帕斯卡采用与钟表类似的齿轮传动装置,制成了十进制加法器。1673年,德国数学家莱布尼兹制成的计算机,进一步解决了十进制数的乘、除运算。
1946年2月,世界上第一台电子计算机: 电子数字积分计算机(Electronic Numerical And Calculator,ENIAC)在美国宾夕法尼亚大学问世了。如图1.2所示,它使用了18800个电子管、10000只电容和7000个电阻,占地170m2,重达30t,耗电150kW,每秒可进行5000次加减法运算,价值40万美元。当时它的设计目的是解决实验室弹道特性的计算问题,虽然它无法同如今的计算机相比,但在当时它可以把计算一条发射弹道的时间缩短到30s以下,极大程度地提高了工程计算人员的工作效率。
从第一台电子计算机诞生至今,计算机得到了飞速发展。最具代表性的人物是英国科学家阿兰·图灵(Alan Mathison Turing,1912—1954)和美籍匈牙利科学家冯·诺依曼(John Von Neuman,1903—1957),参见图1.3~图1.5。


图1.2第一台电子计算机ENIAC




图1.3冯·诺依曼与电子计算机ENIAC





图1.4阿兰·图灵




图1.5冯·诺依曼



图灵对计算机的主要贡献是: 建立了图灵机的理论模型,发展了可计算性理论; 提出图灵测试,阐述了机器智能的概念。为了纪念这位伟大的科学家,人们将计算机界的最高奖定名为“图灵奖”,图灵奖又被喻为计算机界的诺贝尔奖。
冯·诺依曼被誉为“电子计算机之父”,他对计算机的主要贡献是提出了计算机计数采用二进制、存储程序和计算机由5个部件构成(运算器、控制器、存储器、输入设备和输出设备)的重要思想,同时与同事研制出了人类第二台计算机: 离散变量自动电子计算机(Electronic Discrete Variable Automatic Computer,EDVAC)。
2. 电子计算机发展的阶段
从第一台计算机诞生以来,每隔数年在软硬件方面就有一次重大的突破,至今计算机的发展已经历了以下几代。
1) 第一代计算机: 电子管数字计算机(1946—1958年)
逻辑元件采用真空电子管,主存储器采用汞延迟线、阴极射线示波管静电存储器、磁鼓、磁芯; 外存储器采用磁带,一般采用机器语言、汇编语言。应用领域以军事和科学计算为主。特点是体积大、功耗高、可靠性差、速度慢(一般每秒数千次至数万次)、价格昂贵,但为以后的计算机发展奠定了基础。
2) 第二代计算机: 晶体管数字计算机(1958—1964年)
逻辑元件采用晶体管,主存储器采用磁芯,外存储器采用磁盘。出现了以批处理为主的操作系统、高级语言及其编译程序。应用领域以科学计算和事务处理为主,并开始进入工业控制领域。特点是体积缩小、能耗降低、可靠性提高、运算速度提高(一般为每秒数十万次,甚至高达每秒300万次),性能比第一代计算机有很大的提高。
3) 第三代计算机: 集成电路数字计算机(1964—1971年)
逻辑元件采用中、小规模集成电路(MSI、SSI),主存储器仍采用磁芯。同时出现了分时操作系统以及结构化、规模化程序设计方法。特点是速度更快(一般每秒数百万次至数千万次),可靠性有了显著提高,价格进一步下降,产品走向通用化、系列化和标准化。应用领域开始进入文字处理和图形图像处理领域。
4) 第四代计算机: 大规模集成电路计算机(1971年至今)
逻辑元件采用大规模和超大规模集成电路(LSI和VLSI)。出现了数据库管理系统、网络管理系统和面向对象语言等。应用领域从科学计算、事务管理、过程控制逐步走向家庭。
5) 新一代计算机: 人工智能计算机
新一代计算机是人类追求的一种更接近人的人工智能计算机。它能理解人的语言以及文字和图形。新一代计算机是把信息采集存储处理、通信和人工智能结合在一起的智能计算机系统。它不仅能进行一般信息处理,而且能面向知识处理,具有形式化推理、联想、学习和解释的能力,能帮助人类开拓未知的领域和获得新的知识。
3. 计算机的发展趋势
1) 微型化
由于超大规模集成电路技术的进一步发展,微型机的发展日新月异,大约每三年至五年换代一次; 一个完整的计算机已经可以集成在火柴盒大小的硅片上。新一代的微型计算机由于具有体积小、价格低、对环境条件要求少、性能迅速提高等优点,大有取代中、小型计算机之势。
2) 巨型化
在一些领域,运算速度要求达到每秒10亿次,这就必须发展运算速度极快、功能性极强的巨型计算机。巨型计算机体现了计算机科学的最高水平,反映了一个国家科学技术的实力。现代巨型计算机的标准是运算速度每秒超过10亿次,比20世纪70年代的巨型机提高一个数量级。
目前巨型机大多用于空间技术,中、长期天气预报,石油勘探,战略武器的实时控制等领域。生产巨型机的国家主要是美国和日本,俄罗斯、英国、法国、德国也都开发了自己的巨型机。我国在1983年研制了“银河Ⅰ”型巨型机,其速度为每秒1亿次浮点运算。1992年研制了“银河Ⅱ”型巨型机,其速度为每秒10亿次浮点运算,1997年推出的“银河Ⅲ”型巨型机是属于每秒百亿次浮点运算的机型,它相当于第二代巨型机。2001年我国又成功推出了“曙光3000”巨型机,其速度为每秒4000亿次,2003年12月推出的联想“深腾6800”达

图1.6“天河”二号巨型计算机

到每秒4万亿次,2004年6月推出的“曙光4000A”达到每秒11万亿次。图1.6所示为2013年5月由国防科学技术大学研制的“天河”二号超级计算机系统,以峰值计算速度每秒5.49亿亿次、持续计算速度每秒3.39亿亿次双精度浮点运算的优异性能位居榜首,成为全球最快超级计算机。
3) 网络化
网络化是计算机发展的又一个重要趋势。从单机走向联网是计算机应用发展的必然结果。所谓计算机网络化,是指用现代通信技术和计算机技术把分布在不同地点的计算机互联起来,组成一个规模大、功能强、可以互相通信的网络结构。网络化的目的是使网络中的软件、硬件和数据等资源能被网络上的用户共享。目前,大到世界范围的通信网,小到实验室内部的局域网已经很普及,Internet已经连接包括我国在内的多个国家和地区。由于计算机网络实现了多种资源的共享和处理,提高了资源的使用效率,因而深受广大用户的欢迎,得到了越来越广泛的应用。
4) 智能化
智能化使计算机具有模拟人的感觉和思维过程的能力,使计算机成为智能计算机。这也是目前正在研制的新一代计算机要实现的目标。智能化的研究包括模式识别、图像识别、自然语言的生成和理解、博弈、定理自动证明、自动程序设计、专家系统、学习系统和智能机器人等。目前,已研制出多种具有人的部分智能的机器人。
5) 多媒体化
多媒体计算机是当前计算机领域中最引人注目的高新技术之一。多媒体计算机就是利用计算机技术、通信技术和大众传播技术综合处理多种媒体信息的计算机。这些信息包括文本、视频图像、图形、声音、文字等。多媒体技术使多种信息建立了有机联系,并集成为一个具有人机交互的系统。多媒体计算机将真正改善人机界面,使计算机朝着人类接收和处理信息的最自然的方式发展。
三、 计算机的特点
计算机已应用于社会的各个领域,成为现代社会不可缺少的工具。它之所以具备如此强大的能力,是由它自身的特点所决定的。
1. 运算速度快
运算速度快是计算机从出现到现在人们利用它的主要目的。现代的计算机已达到每秒几百亿次至几万亿次的运算速度。许多以前无法做到的事情现在利用高速计算机都可以实现。如众所周知的天气预报,若不采用高速计算机,就不可能对几天后的天气变化做较准确的预测。另外,像我国十多亿人的人口普查,离开了计算机也无法完成。
2. 计算精度高
计算机采用二进制数字运算,计算精度可用增加表示二进制数的位数来获得,从程序设计方面也可使用某些技巧,使计算精度达到人们所需的要求。例如,众所周知的圆周率,一位数学家花了15年时间才计算到707位,而采用计算机目前已达到小数点后上亿位。
3. 具有记忆和逻辑判断能力
计算机的存储器不仅能存放原始数据和计算结果,更重要的是能存放用户编制好的程序。它的容量都是以兆字节计算的,可以存放几十万至几千万个数据或文档资料,当需要时,又可快速、准确、无误地取出来。计算机运行时,它从存储器高速地取出程序和数据,按照程序的要求自动执行。
计算机还具有逻辑判断能力,这使得计算机能解决各种不同的问题。如判断一个条件是真还是假,并且根据判断的结果,自动确定下一步该怎么做。例如,数学中的著名难题“4色问题(对任意地形图,要使相邻区域颜色不同,用4种颜色就够了)”,一位数学家在1976年通过3台计算机用了上百亿次判断花费1200 h才解决这个问题。
4. 可靠性高,通用性强
现代计算机由于采用超大规模集成电路,都具有非常高的可靠性,可以安全地在各行各业使用。由于计算机同时具有计算和逻辑判断等功能,所以其不但可用于数值计算,还可以处理非数据信息,如图形图像处理、文字编辑、语言识别、信息检索等。
四、 计算机的分类
计算机的分类方法很多,按计算机的原理将其分为数字计算机、模拟计算机和混合式计算机; 按用途将其分为通用机和专用机; 目前常用的分类方法是从功能上分为巨型机、大型机、中型机、小型机、微型机以及工作站。
(1) 巨型机(supercomputer)。巨型机有极高的速度、极大的容量,应用于国防尖端技术、空间技术、大范围长期性天气预报、石油勘探等方面。目前这类机器的运算速度可达每秒百亿次。
对巨型机的指标一般这样规定: 首先,计算机的运算速度平均每秒1000万次以上; 其次,存储容量在1000万位以上。由我国研制成功的“银河”计算机就属于巨型机。巨型机的发展是电子计算机的一个重要方向。它的研制水平标志着一个国家的科学技术和工业发展的程度,体现着国家经济发展的实力。
(2) 大型机。它一般用在尖端科研领域,主机非常庞大,通常由许多中央处理器协同工作,具有超大的内存、海量的存储器。它需要使用专用的操作系统和应用软件。
(3) 中型机。中型机规模介于大型机和小型机之间。
(4) 小型机。小型机是指运行原理类似于个人计算机(PC)和服务器,但性能及用途又与它们截然不同的一种高性能计算机,最早的小型机是20世纪70年代由DEC公司开发的。
(5) 微型机。它采用微处理器、半导体存储器和输入输出接口等芯片组装,具有体积更小、价格更低、通用性更强、灵活性更好、可靠性更高、使用更加方便等优点。
(6) 工作站。这是一种以个人计算机和分布式网络计算为基础,主要面向专业应用领域,具备强大的数据运算与图形、图像处理能力,为满足工程设计、动画制作、科学研究、软件开发、金融管理、信息服务、模拟仿真等专业领域而设计开发的高性能计算机。
任务实施
一、 认识计算机系统组成
计算机在现代生产和生活中的作用越来越重要。如何对计算机进行简单的日常维护,使计算机能够正常发挥理想的性能,当计算机发生故障时应如何进行处理,这些对于一般计算机使用者来说十分重要。在许多人看来,计算机是精密的贵重设备,神秘而高深莫测,使用多年也不敢打开看看机箱里到底有什么。其实,个人计算机的结构并不复杂,只要了解它是由哪些部件组成的,各部件的功能是什么,就能对计算机中的板卡和部件进行维护和升级。
计算机系统是由硬件系统和软件系统两部分组成的。硬件系统是计算机进行工作的物质基础; 软件系统是指在硬件系统上运行的各种程序及有关资料,用以管理和维护好计算机,方便用户,使计算机系统更好地发挥作用。计算机系统中的硬件系统和软件系统的构成如图1.7所示。


图1.7计算机系统的组成


1. 计算机硬件系统
计算机硬件系统是指构成计算机的物理装置,看得见、摸得着,是一些实实在在的有形实体。不管计算机为何种机型,也不论它的外形、配置有多大的差别,计算机的硬件系统都是基于冯·诺依曼体系结构,由运算器、控制器、存储器、输入设备和输出设备等五部分组成。通常把组成计算机的所有实体称为计算机硬件系统或计算机硬件。
计算机的五大部分通过系统总线完成指令所传达的任务。系统总线由地址总线、数据总线和控制总线组成。当计算机在接受指令后,由控制器指挥,将数据从输入设备传送到存储器存储起来; 再由控制器将需要参加运算的数据传送到运算器,由运算器进行处理,处理后的结果由输出设备输出,其过程如图1.8所示。


图1.8计算机硬件系统的工作流程


1) 运算器
运算器是计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件(Arithmetic Logic Unit,ALU)。
2) 控制器
控制器是计算机的指挥系统,主要由指令寄存器、译码器、时序节拍发生器、操作控制部件和指令计数器组成。指令寄存器存放由存储器取得的指令,由译码器将指令中的操作码翻译成相应的控制信号,再由操作控制部件将时序节拍发生器产生的时序脉冲和节拍电位同译码器的控制信号组合起来,有时间性、有顺序性地控制各个部件完成相应的操作。指令计数器的作用是指出下一条指令的地址。就这样,在控制器的控制下,计算机就能够自动、连续地按照编制好的程序,实现一系列指定的操作,完成一定的任务。
控制器和运算器通常集中在一整块芯片上,构成中央处理器(Central Processing Unit,CPU)。CPU是计算机的核心部件,是计算机的心脏。微型计算机的中央处理器又称为微处理器。
3) 存储器
存储器(memory)是计算机系统中的记忆设备,用来存放程序和数据。计算机中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。根据存储器的组成介质、存取速度的不同又可以分为内存储器(简称内存)和外存储器(简称外存)两种。
内存是由半导体器件构成的存储器,是计算机存放数据和程序的地方,计算机所有正在执行的程序指令,都必须先调入内存中才能执行。其特点是存储容量较小,存取速度快。
外存是由磁性材料构成的存储器,用于存放暂时不用的程序和数据。其特点是存储容量大,存取速度相对较慢。
存储容量的基本单位是字节(B),还有千字节(KB)、兆字节(MB)、吉字节(GB)等,它们之间的换算关系是: 
1KB=1024B; 1MB=1024KB; 1GB=1024MB; 1TB=1024GB
4) 输入设备
输入设备是向计算机输入数据和信息的设备,是计算机与用户或其他设备通信的桥梁。输入设备由两部分组成: 输入接口电路和输入装置。
输入接口电路是连接输入装置与计算机主机的部件。
输入装置通过接口电路与主机连接,从而能够接收各种各样的数据信息。
键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、游戏杆、语音输入装置等都属于输入设备。
5) 输出设备
输出设备是计算机的终端设备,用于接收计算机数据的输出显示、打印、声音,控制外围设备操作等,也用于把各种计算结果数据或信息以数字、字符、图像、声音等形式表示出来。
常见的输出设备有显示器、打印机、绘图仪、影像输出系统、语音输出系统、磁记录设备等。
2. 计算机软件系统
我们把计算机的程序、要处理的数据及其有关的文档统称为软件。计算机功能的强弱不仅取决于它的硬件构成,也取决于软件配备的丰富程度。
程序是计算任务的处理对象和处理规则的描述; 文档是为了便于了解程序所需的阐明性资料。程序必须装入机器内部才能工作,文档一般是给人看的,不一定装入机器。
计算机的软件系统可以分为系统软件和应用软件两大部分。
(1) 系统软件负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。通过系统软件,计算机使用者和其他软件可以将计算机当作一个整体而不需要顾及底层硬件是如何工作的。一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器、数据库管理、存储器格式化、文件系统管理、用户身份验证、驱动管理、网络连接等方面的工具)。
(2) 应用软件是为了某种特定的用途而被开发的软件。它可以是一个特定的程序,比如一个图像浏览器; 也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。现在市面上应用软件的种类非常多,例如,各种财务软件包、统计软件包、用于科学计算的软件包、用于人事管理的管理系统、用于档案管理的档案系统等。应用软件的丰富与否、质量的好坏,都直接影响到计算机的应用范围与实际经济效益。
人们通常用以下几个方面来衡量一个应用软件的质量。
(1) 占用存储空间的多少。
(2) 运算速度的快慢。
(3) 可靠性和可移植性。
以系统软件作为基础和桥梁,用户就能够使用各种各样的应用软件,让计算机完成各种所需要的工作,而这一切都是由作为系统软件核心的操作系统来管理控制的。
3. 计算机硬件和软件的关系
硬件和软件是一个完整的计算机系统互相依存的两大部分,它们的关系主要体现在以下几个方面。
(1) 硬件和软件互相依存。硬件是软件赖以工作的物质基础,软件的正常工作是硬件发挥作用的唯一途径。计算机系统必须配备完善的软件系统才能正常工作,且充分发挥硬件的各种功能。
(2) 硬件和软件无严格界线。随着计算机技术的发展,在许多情况下,计算机的某些功能既可以由硬件实现,也可以由软件来实现。因此,在一定意义上,硬件与软件没有绝对严格的界限。
(3) 硬件和软件协同发展。计算机软件随硬件技术的迅速发展而发展,而软件的不断发展与完善又促进硬件的更新,两者密切地交织发展,缺一不可。
二、 计算机的工作原理
1. 存储程序和程序控制原理
冯·诺依曼是美籍匈牙利数学家、现代电子计算机的奠基人之一,他在1946年提出了关于计算机组成和工作方式的基本设想,就是“存储程序和程序控制”。这种设想的具体化,使当代电子计算机的发展发生了质的变化,它使电子计算机不但能对操作数进行快速的运算,而且也能快速地解释和执行构成程序的指令; 同时提供了可以随意或者根据当前运算结果进行程序转移的灵活性。这种灵活性的意义,可以说远远超过了快速性,因为它赋予计算机逻辑判断的能力,突破了把电子计算机只用作一种快速计算工具的局限。几十年来,尽管计算机制造技术已经发生了极大的变化,但是就其体系结构而言,仍然是根据他的设计思想制造的,这样的计算机称为冯·诺依曼结构计算机。冯·诺依曼体系结构可以概括为以下几点。
(1) 由运算器、控制器、存储器、输入设备和输出设备等五大基本部分组成计算机系统,并规定了这五部分的基本功能。
(2) 计算机内部采用二进制来表示数据和指令。
(3) 将程序和数据存入内部存储器中,计算机在工作时可以自动逐条取出指令并加以执行。
计算机能够自动地完成各种数值运算和复杂的信息处理过程的基础就是存储程序和程序控制原理。
2. 指令和程序
计算机之所以能自动、正确地按人们的意图工作,是由于人们事先已把计算机如何工作的程序和原始数据通过输入设备输送到计算机的存储器中。当计算机执行时,控制器就把程序中的“命令”一条接一条地从存储器中取出来,加以翻译,并按“命令”的要求进行相应的操作。
当人们需要计算机完成某项任务的时候,首先要将任务分解为若干个基本操作的集合,计算机所要执行的基本操作命令就是指令,指令是对计算机进行程序控制的最小单位,是一种采用二进制表示的命令语言。一个CPU能够执行的全部指令的集合称为该CPU的指令系统,不同CPU的指令系统是不同的。指令系统的功能是否强大、指令类型是否丰富,决定了计算机的能力,也影响着计算机的硬件结构。


图1.9指令格式


每条指令都要求计算机完成一定的操作,它告诉计算机进行什么操作、从什么地址取数、结果送到什么地方去等信息。计算机的指令系统一般应包括数据传送指令、算术运算指令、逻辑运算指令、转移指令、输入输出指令和处理机控制指令等。一条指令通常由两个部分组成,即操作码和操作数,如图1.9所示。操作码用来规定指令应进行什么操作,而操作数用来指明该操作处理的数据或数据所在存储单元的地址。

人们为解决某项任务而编写的指令的有序集合称为程序。指令的不同组合方式,可以构成完成不同任务的程序。
3. 计算机的工作过程
计算机的工作过程就是执行程序的过程。在运行程序之前,首先通过输入设备将编好的程序和原始数据输送到计算机内存储器中,然后按照指令的顺序,依次执行指令。执行一条指令的过程是如下所述。
(1) 取指令: 从内存储器中取出要执行的指令输送到CPU内部的指令寄存器暂存。
(2) 分析指令: 把保存在指令寄存器中的指令输送到指令译码器,译出该指令对应的操作。
(3) 执行指令: CPU向各个部件发出相应控制信号,完成指令规定的操作。
重复上述步骤,直到遇到结束程序的指令为止。其过程如图1.10所示。


图1.10执行过程


程序的这种执行方式称为顺序执行方式,早期的计算机系统均采用这样的执行方式。该方式的优点是控制系统简单,设计和实现容易; 缺点是处理器执行程序的速度比较慢,因为只有在上一条指令执行完后,才能取出下一条指令并执行,而且计算机各个功能部件的利用率较低。在计算机中,取指令、分析指令、执行指令是由不同的功能部件完成的,如果按照图1.10的流程工作,则在取指令时,分析指令和执行指令的部件处于空闲状态。同样,在执行指令时,取指令和分析指令的操作也不能进行。这样,计算机各个部件的功能无法充分发挥,致使计算机系统的工作效率较低。
为了提高计算机的运行速度,在现代计算机系统中,引入了流水线控制技术,使负责取指令、分析指令和执行指令的部件并行工作。其程序执行过程如图1.11所示。


图1.11程序的并行流水线执行方式


假如这3个功能部件完成操作所用的时间相等,那么,当第一条指令进入执行部件时,分析部件开始对第二条指令进行分析,取指部件也开始从内存取第三条指令。如果不考虑程序的转移情况,程序的顺序执行方式所需要的时间大约为并行方式的3倍。
4. 兼容性
某一类计算机的程序能否在其他计算机上运行,这就是计算机“兼容性”问题。比如,Intel公司和AMD公司生产的CPU,指令系统几乎一致,因此它们相互兼容。而Apple公司生产的Macintosh计算机,其CPU采用Motorola公司的PowerPC微处理器,指令系统大相径庭,因此无法与采用Intel公司和AMD公司CPU的计算机兼容。
即便是同一公司的产品,由于技术的发展,指令系统也是不同的。如Intel公司的产品经历8088→80286→80386→80486→Pentium→PentiumⅡ→PentiumⅢ→PentiumⅣ。新处理器包含的指令数目和种类越来越多,通常采用“向下兼容”的原则,即新类型的处理器包含旧类型处理器的全部指令,从而保证在旧类型处理器上开发的系统能够在新的处理器中被正确执行。
三、 掌握计算机中的信息表示方法
1. 进位计数制
数制也称计数制,是指用一组固定的符号和统一的规则来表示数值的方法。按进位的原则进行计数的方法,称为进位计数制。
在日常生活中,人们通常使用十进制数,但实际上存在着多种进位计数制,如二进制(两只鞋为一双)、十二进制(12个月为一年)、二十四进制(一天24小时)、六十进制(60秒为一分钟,60分钟为一小时)等。计算机是由电子器件组成的,考虑到经济、可靠、容易实现、运算简便、节省器件等因素,在计算机中采用的数制是二进制。
2. 十进制数表示
人们最熟悉最常用的数制是十进制,一个十进制数有两个主要特点。
(1) 它有十个不同的数字符号,即0,1,2,…,9。
(2) 它采用“逢十进一”的进位原则。
因此,同一个数字符号在不同位置(或数位)代表的数值是不同的。
基数和位权是进位计数制的两个要素。
(1) 基数就是进位计数制的每位数上可能有的数码的个数。例如,十进制数每位上的数码,有0,1,2,…,9十个数码,所以基数为10。
(2) 位权是指一个数值的每一位上的数字的权值的大小。例如十进制数4567从低位到高位的位权分别为100、101、102、103,因为: 

4567=4×103+5×102+6×101+7×100


任何一种数制的数都可以表示成按位权展开的多项式之和。比如,十进制435.05可表示为: 

435.05=4×102+3×101+5×100+0×10-1+5×10-2

一般地,任意一个十进制数D=dn-1dn-2…d1d0d-1…d-m都可以表示为: 


D=dn-1×10n-1+dn-2×10n-2+…+d1×101+

d0×100+d-1×10-1+…+d-m×10-m (11)


式(11)称为十进制数的按权展开式,其中,di×10i中的i表示数的第i位; di表示第i位的数码,它可以是0~9的任一个数字,由具体的D确定; 10i称为第i位的权(或数位值),数位不同,其权的大小也不同,表示的数值也就不同; m和n为正整数,n为小数点左面的位数,m为小数点右面的位数; 10为计数制的基数,所以称它为十进制数。
3. 二进制数表示
在日常生活中人们并不经常使用二进制数,因为它不符合人们的固有习惯。但在计算机内部的数是用二进制数来表示的,这主要有以下几个方面的原因。
1) 电路简单,易于表示
计算机是由逻辑电路组成的,逻辑电路通常只有两个状态。例如,开关的接通和断开,晶体管的饱和和截止,电压的高与低等。这两种状态正好用来表示二进制数的0和1。若是采用十进制数,则需要有10种状态来表示10个数码,实现起来比较困难。
2) 可靠性高
两种状态表示两个数码,数码在传输和处理中不容易出错,因而电路更加可靠。
3) 运算简单
二进制数的运算规则简单,无论是算术运算还是逻辑运算都容易进行。十进制数的运算规则相对烦琐,现在我们已经证明,R进制数的算术求和、求积规则各有R(R+1)/2种。如采用二进制数,求和与求积运算法只有3种,因而简化了运算器等物理器件的设计。
4) 逻辑性强
计算机不仅能进行数值运算而且能进行逻辑运算。逻辑运算的基础是逻辑代数,而逻辑代数是二值逻辑。二进制数的两个数码1和0,恰好代表逻辑代数中的“真”(True)和“假”(False)。
与十进制数类似,二进制数有两个主要特点。
(1) 有两个不同的数字符号,即0、1。
(2) 采用“逢二进一”的进位原则。
因此,同一数字符号在不同的位置(或数位)所代表的数值是不同的。例如,二进制数1101.11可以写成: 

1101.11=1×23+1×22+0×21+1×20+1×2-1+1×2-2

一般地,任意一个二进制数B=bn-1bn-2…b1b0b-1…b-m都可以表示为: 


B=bn-1×2n-1+bn-2×2n-2+…+b1×21+

b0×20+b-1×2-1+…+b-m×2-m(12)


式(12)称为二进制数的按权展开式,其中,bi×2i中的bi只能取0或1,由具体的B确定; 2i称为第i位的权; m、n为正整数,n为小数点左面的位数,m为小数点右面的位数; 2是计数制的基数,所以称为二进制数。
4. 八进制数和十六进制数表示
八进制数的基数为8,使用8个数字符号(0,1,2,…,7),“逢八进一,借一当八”。一般地,任意的八进制数Q=qn-1qn-2…q1q0q-1…q-m都可以表示为: 


Q=qn-1×8n-1+qn-2×8n-2+…+q1×81+

q0×80+q-1×8-1+…+q-m×8-m(13)


十六进制数的基数为16,使用16个数字符号(0,1,2,…,9,A,B,C,D,E,F),“逢十六进一,借一当十六”。一般地,任意的十六进制数H=hn-1hn-2…h1h0h-1…h-m都可表示为:


H=hn-1×16n-1+hn-2×16n-2+…+h1×161+

h0×160+h-1×16-1+…+h-m×16-m(14)


5. 进位计数制的基本概念
归纳以上讨论,可以得出进位计数制的一般概念。
若用j代表某进制的基数,ki表示第i位数的数符,则j进制数N可以写成如下多项式之和: 


N=kn-1×jn-1+kn-2×jn-2+…+k1×j1+

k0×j0+k-1×j-1+…+k-m×j-m(15)


式(15)称为j进制的按权展开式,其中,ki×ji中ki可取0~j-1之间的值,取决于N; ji称为第i位的权; m和n为正整数,n为小数点左面的位数,m为小数点右面的位数。表1.1给出了常见的进位计数制对照。


表1.1进位计数制对照表



十进制数二进制数八进制数十六进制数十进制数二进制数八进制数十六进制数

0
0000
0
0
8
1000
10
8
1
0001
1
1
9
1001
11
9
2
0010
2
2
10
1010
12
A
3
0011
3
3
11
1011
13
B
4
0100
4
4
12
1100
14
C
5
0101
5
5
13
1101
15
D
6
0110
6
6
14
1110
16
E
7
0111
7
7
15
1111
17
F

四、 数制间的转换
将数由一种数制转换成另一种数制称为数制间的转换。因为日常生活中经常使用的是十进制数,而在计算机中采用的是二进制数,所以在使用计算机时就必须把输入的十进制数换算成计算机所能够接收的二进制数。计算机在运行结束后,再把二进制数换算成人们所习惯的十进制数输出。这两个换算过程完全由计算机自动完成。数制间转换的实质是进行基数的转换。不同数制间转换的规则是: 如果两个有理数相等,则两数的整数部分和小数部分一定分别相等。
下面介绍一下数制间的转换。
1. 二进制数转换为十进制数
二进制数转换成十进制数的方法是: 根据有理数的按权展开式,把各位的权(2的某次幂)与数位值(0或1)的乘积项相加,其和便是相应的十进制数。这种方法称为按权相加法。为说明问题,可以将数用括号括起来,在括号外右下角加一个下标表示数制。
【例1.1】求(110111.101)2的等值十进制数。
【解】基数J=2 按权相加,得: 


(110111.101)2=1×25+1×24+0×23+1×22+1×21+

1×20+1×2-1+0×2-2+1×2-3

=32+16+4+2+1+0.5+0.125

=(55.625)10


2. 十进制数转换为二进制数
要把十进制数转换为二进制数,就是设法寻找二进制数的按权展开式(12)中系数bn-1,bn-2,…,b1,b0,b-1,…,b-m。
1) 整数转换
假设有一个十进制整数215,试把它转换为二进制整数,即: 

(215)10=(bn-1bn-2…b1b0)2

问题就是要找到bn-1,bn-2,…,b1,b0的值,而这些值不是1就是0,取决于要转换的十进制数(例中即为215)。
根据二进制数的定义: 

(bn-1bn-2…b1b0)2=bn-1×2n-1+bn-2×2n-2+…+b1×21+b0×20

于是有: 

(215)10=bn-1×2n-1+bn-2×2n-2+…+b1×21+b0×20

显然,除了最后一项b0以外,其他各项都包含有2的因子,它们都能被2除尽。所以,如果用2去除十进制数(215)10,则它的余数即为b0。所以,b0=1,并有: 

(107)10=bn-1×2n-2+bn-2×2n-3+…+b2×21+b1



图1.12十进制数转二进制数过程


显然,等式右边除了最后一项b1外,其他各项都含有2的因子,都能被2除尽。所以,如果用2去除(107)10,则所得的余数必为b1,即: b1=1。
用这样的方法一直继续下去,直至商为0,就可得到bn-1,bn-2,…,b1,b0的值。整个过程如图1.12所示。因此: 

(215)10=(11010111)2


上述结果也可以用式(12)来验证,即: 

(11010111)2=27+26+24+22+21+20=(215)10

总结上面的转换过程,可以得出十进制整数转换为二进制整数的方法: 用2不断地去除要转换的十进制数,直至商为0; 每次的余数即为二进制数码,最初得到的为整数的最低位b0,最后得到的是bn-1。这种方法称为“除二取余法”。
2) 纯小数转换
将十进制小数0.6875转换成二进制数,即: 

(0.6875)10=(0.b-1b-2…b-m+1b-m)2

问题就是要确定b-1~b-m的值。按二进制小数的定义,则有: 

(0.6875)10=b-1×2-1+b-2×2-2+…+b-m+1×2-m+1+b-m×2-m

若把等式的两边都乘以2,则得: 

(1.375)10=b-1+(b-2×2-1+…+b-m+1×2-m+2+b-m×2-m+1)

显然等式右边括号内的数是小于1的(因为乘以2以前是小于0.5的),两个数相等,必定是整数部分和小数部分分别相等,所以b-1=1,等式两边同时去掉1后,剩下的为: 

(0.375)10=b-2×2-1+(b-3×2-2+…+b-m+1×2-m+2+b-m×2-m+1)

两边都乘以2,则得: 

(0.75)10=b-2+(b-3×2-1+…+b-m+1×2-m+3+b-m×2-m+2)

于是b-2=0。如此继续下去,直至乘积的小数部分为0,就可逐个得到b-1,b-2,…,b-m+1,b-m的值。因此得到结果: 

(0.6875)10=(0.1011)2

上述结果也可以用式(12)来验证,即: 

(0.1011)2=2-1+2-3+2-4=0.5+0.125+0.0625=(0.6875)10

整个过程如图1.13所示。


图1.13小数转换过程


总结上面的转换过程,可以得到十进制纯小数转换为二进制小数的方法: 不断用2去乘要转换的十进制小数,将每次所得的整数(0或1)依次记为b-1,b-2,…,b-m+1,b-m,这种方法称为“乘2取整法”。但转换过程应注意以下两点。
(1) 若乘积的小数部分最后能为0,那么最后一次乘积的整数部分记为b-m,则0.b-1 b-2…b-m即为十进制小数的二进制表达式。
(2) 若乘积的小数部分永不为0,表明十进制小数不能用有限位的二进制小数精确表示。则可根据精度要求取m位而得到十进制小数的二进制近似表达式。
3) 混合小数转换
对十进制整数小数部分均有的数,转换只需将整数、小数部分分别转换,然后用小数点连接起来即可。
【例1.2】求十进制数15.25的二进制数表示。
【解】对整数部分和小数部分分别进行转换,然后相加得: 

(15.25)10=(1111.01)2

3. 十进制数与八进制数之间的相互转换
1) 八进制数转换为十进制数
与上面所讲的二进制数转换为十进制数的方法相同,只需把相应的八进制数按它的加权展开式展开就可求得该数对应的十进制数。
【例1.3】分别求出(155.65)8和(234)8的十进制数表示。
【解】


(155.65)8=1×82+5×81+5×80+6×8-1+5×8-2

=64+40+5+0.75+0.078125

=(109.828125)10

(234)8=2×82+3×81+4×80

=128+24+4

=(156)10


2) 十进制数转换为八进制数
与上面所讲的十进制数转换为二进制数的方法相同,对于十进制整数通过“除八取余”就可以转换成对应的八进制数,第一个余数是相应八进制数的最低位,最后一个余数是相应八进制数的最高位。
【例1.4】求(125)10的八进制数表示。
【解】按照除八取余的方法得到: 

(125)10=(175)8

对于十进制小数,则同前面介绍的十进制数转换为二进制数的方法相同,那就是“乘八取整”,但是要注意,第一个整数为相应八进制数的最高位,最后一个整数为最低位。
【例1.5】求(0.375)10的八进制数表示。
【解】

(0.375)10=(0.3)8

对于混合小数,只需按上面的方法,将其整数部分和小数部分分别转换为相应的八进制数,然后再相加就是所求的八进制数。
4. 十进制数与十六进制数之间的相互转化
同理,十六进制数转换为十进制数,只需按其加权展开式展开即可。
【例1.6】求(12.A)16的十进制数表示。
【解】

(12.A)16=1×161+2×160+10×16-1=(18.625)10

十进制数转换为十六进制数,同样是对其整数部分按“除16取余”,小数部分按“乘16取整”的方法进行转换。
【例1.7】求(30.75)10的十六进制数表示。
【解】

(30.75)10=(1E.C)16

5. 二进制数与八进制数、十六进制数间的转换
计算机中实现八进制数、十六进制数与二进制数的转换很方便。
由于23=8,所以一位八进制数恰好等于3位二进制数。同样,因为24=16,使得一位十六进制数可表示成4位二进制数。
1) 八进制数与二进制数的相互转换
把二进制整数转换为八进制数时,从最低位开始,向左每3位为一个分组,不足3位的前面用0补足,然后按表1.2中对应关系将每3位二进制数用相应的八进制数替换,即为所求的八进制数。
【例1.8】求(11101100111)2的八进制数表示。
【解】按3位分组,得: 

(011) ↓3
(101)↓5
(100)↓4
(111)↓7

所以

(11101100111)2=(3547)8

对于二进制小数,则要从小数点开始向右每3位为一个分组,不足3位时在后面补0,然后写出对应的八进制数即为所求的八进制数。
【例1.9】求(0.01001111)2的八进制数表示。

【解】按3位分组,得

0.
(010)↓2
(011)↓3
(110)↓6

所以

(0.01001111)2=(0.236)8

由例1.8和例1.9可得到如下等式: 

(11101100111.01001111)2=(3547.236)8

将八进制数转换成二进制数,只要将上述方法逆过来,即把每一位八进制数用所对应的三位二进制数替换,就可完成转换。
【例1.10】分别求(17.721)8和(623.56)8的二进制数表示。
【解】


(17.721)8=(001)(111).(111)(010)(001)

=(1111.111010001)2

(623.56)8=(110)(010)(011).(101)(110)

=(110010011.10111)2


2) 二进制数与十六进制数的转换
和二进制数与八进制数之间的相互转换相仿,二进制数转换为十六进制数是按每4位分一组进行的,而十六进制数转换为二进制数是每位十六进制数用4位二进制数替换,即可完成相互转换。
【例1.11】将二进制数(1011111.01101)2转换成十六进制数。
【解】


(1011111.01101)2=(0101)(1111).(0110)(1000)

↓↓↓↓

5F68

=(5F.68)16


【例1.12】把十六进制数(D57.7A5)16转换为二进制数。
【解】


(D57.7A5)16=(1101)(0101)(0111).(0111)(1010)(0101)

=(110101010111.011110100101)2


可以看出,二进制数与八进制数、二进制数与十六进制数之间的转换很方便。八进制数和十六进制数基数大,书写较简短直观,所以许多情况下,人们采用八进制数或十六进制数书写程序和数据。

五、 二进制数的运算
二进制数是计算技术中广泛采用的一种数制。二进制数是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。
二进制数的算术运算的基本规律和十进制数的运算十分相似。
1. 二进制数加法
加法运算规则: 0+0=0; 0+1=1; 1+0=1; 1+1=10。
【例1.13】求(1101)2+(1011)2。
【解】如图1.14所示,所以:

(1101)2+(1011)2=(11000)2

2. 二进制数减法
减法运算规则: 0-0=0; 1-1=0; 1-0=1; 0-1=1 (借位为1)。
【例1.14】求(1101)2-(111)2。
【解】如图1.15所示,所以:

(1101)2-(111)2=(110)2



图1.14二进制数加法




图1.15二进制数减法



3. 二进制数乘法
乘法运算规则: 0×0=0; 0×1=0; 1×0=0; 1×1=1。
【例1.15】求(1110)2×(101)2。
【解】如图1.16所示,所以: 

(1110)2×(101)2=(1000110)2

4. 二进制数除法
二进制数除法与十进制数除法很类似。可先从被除数的最高位开始,将被除数(或中间余数)与除数相比较,若被除数(或中间余数)大于除数,则用被除数(或中间余数)减去除数,商为1,并得相减之后的中间余数,否则商为0。再将被除数的下一位移下补充到中间余数的末位,重复以上过程,就可得到所要求的各位商数和最终的余数。
除法运算规则: 0÷0=0; 0÷1=0; 1÷1=1。
【例1.16】求(1110101)2÷(1001)2。
【解】如图1.17所示,所以:

(1110101)2÷(1001)2=(1101)2




图1.16二进制数乘法




图1.17二进制数除法



二进制数的运算除了有四则运算外,还有逻辑运算,在这里不做详细介绍。
知识拓展
一、 计算机中数据的表示
在学习本节的内容之前,先要区分两个概念: 数据和信息。数据是计算机处理的对象,是信息的载体,或称为编码的信息; 信息是有意义的数据的内容。计算机要处理的信息除了数值信息以外,还有字符、图像、视频和音频等非数值信息。而计算机只能识别和存储0和1。要使计算机能处理这些信息,首先必须将各类信息转换成0和1表示的代码,这一过程称为编码。计算机专家设计了各种方法来对数据进行编码和存储。在计算机里,不同编码方式的文件格式不同,如存储文本文档、图形数据或音频数据的文件格式各不相同。本节将介绍计算机怎样存储数值、字符、图像、视频和音频等信息。
1. 数值数据的表示
在计算机中,数的长度按二进制位数来计算,由于计算机的存储器是以字节为单位进行数据的存取,所以数据长度也按字节计算。在同一计算机中,数据的长度常常是统一的,超出表示范围则无法表示,不足的部分用0填充,整数在高位补0,纯小数在低位补0。
在计算机中表示数值型数据,为了节省存储空间,小数点的位置总是隐含的。对于一般的数是采用定点数与浮点数两种方法来表示。
1) 定点数
所谓定点数是指小数点位置固定不变的数。在计算机中,通常用定点数来表示整数与纯小数,分别称为定点整数与定点小数。
(1) 定点整数: 一个数的最高二进制位是数符位,用以表示数的符号; 而小数点的位置默认为在最低(即最右边)的二进制位的后面,但小数点不单独占一个二进制位。假设某计算机使用的定点数长度是2B,如果有一个十进制整数为+9963,它的二进制数为+10011011101011,在计算机内以二进制补码定点数表示,格式如图1.18所示。


图1.18整数的定点表示


因此,在一个定点整数中,数符位右边的所有二进制位数表示的是一个整数值。
当数据长度为2B时,补码表示的定点整数的表示范围是: -215≤N≤+(215-1),即-32768≤N≤+32767。
如果把定点整数的长度扩充为4B,则补码表示的定点整数的表示范围达到: -231≤N≤+(231-1),约为0.21×1010,即21亿多。
(2) 定点小数: 一个数的最高二进制位是数符位,用来表示数的符号; 而小数点的位置默认为在数符位后面,不单独占一个二进制位。如果有一个十进制整数为+0.7625,它的二进制数为+0.110010000101000…,在计算机内以二进制补码定点数表示,格式如图1.19所示。


图1.19纯小数的定点表示


因此,在一个定点小数中,数符位右边的所有二进制位数表示的是一个纯小数。
当数据长度为2B时,补码表示的定点小数的表示范围是: -1≤N≤+(1-2-15)。
2) 浮点数
在计算机中,定点数通常只用于表示整数或纯小数。而对于既有整数部分又有小数部分的数,由于其小数点的位置不固定,一般用浮点数表示。
在计算机中所说的浮点数就是指小数点位置不固定的数。一般地,一个既有整数部分又有小数部分的十进制数D可以表示成如下形式: 

D=R×10N

其中,R为一个纯小数,N为一个整数。如一个十进制数123.456可以表示成: 0.123456×103,十进制小数0.00123456可以表示成0.123456×10-2。纯小数R的小数点后第一位一般为非零数字。
同样,对于既有整数部分又有小数部分的二进制数也可以表示成如下形式: 

D=R×2N

其中,R为一个二进制定点小数,称为D的尾数; N为一个二进制定点整数,称为D的阶码,它反映了二进制数D的小数点的实际位置。

由此可见,每个浮点数由两部分组成,即阶码和尾数。浮点数的阶码相当于数学中的指数,其长度决定了数的表示范围。浮点数的尾数为纯小数,表示方法与定点小数相同,其符号将决定数的符号,其长度将影响数的精度。为了使有限的二进制位数能表示出最多的数字位数,要求尾数的小数点后的第一位为非零数字(即为1),这样表示的数称为“规格化”的浮点数。


图1.20浮点数的格式

在计算机中,通常用一串连续的二进制位来存放二进制浮点数,它的一般结构如图1.20所示。

假定某计算机的浮点数用4B来表示,其中阶码占1B,尾数占3B,且每一部分的第一位用于表示该部分的符号。则数的表示范围可达到2127≈1038,远远大于4B定点整数的表示范围0.21×1010。
浮点数的阶码和尾数均为带符号数,可分别用原码或补码表示。
2. 字符数据的表示
计算机除了用于数值计算外,还要处理大量符号如英文字母、汉字等非数值的信息。例如,当你要用计算机编写文章时,就需要将文章中的各种符号、英文字母、汉字等输入计算机,然后由计算机进行编辑排版。
目前,国际上通用的且使用最广泛的字符有: 十进制数字符号0~9、大小写的英文字母、各种运算符、标点符号等,这些字符的个数不超过128个。为了便于计算机识别与处理,这些字符在计算机中是用二进制形式来表示的,通常称为字符的二进制编码。由于需要编码的字符不超过128个,因此,用7位二进制数就可以对这些字符进行编码。但为了方便,