第1章 计算机基础知识
计算机是一种能迅速而高效地自动完成信息处理的电子设备,它按照程序对信息进行存储、加工和处理。在当今高速发展的信息社会中,计算机已经广泛应用到各个领域之中,几乎成为无处不在、无所不能的“宝贝”,成为信息社会中必不可少的工具。学习并牢固掌握计算机基础知识,是更好地使用计算机的前提。本章从计算机的产生和发展出发,对计算机的特点、应用和分类进行了详细阐述,重点介绍了计算机中常用的数制及其转换,以及不同数据类型的编码和存储。
本章学习目标
- 了解计算机的发展历史、工作特点、应用领域、分类等相关知识。
- 掌握数制的基本概念、各种数制之间的相互转换。
- 掌握二进制原码、反码、补码的表示方法。
- 理解英文字符、汉字字符等的编码方式。
1.1 概 述
1.1.1 计算机的产生
1.ENIAC
1942年,在美国军方的资助下,宾夕法尼亚大学在1946年2月14日研发出了世界上第一台电子数字计算机,其目的是用于计算非常复杂的弹道非线性方程组。这台机器被命名为“埃尼阿克”(Electronic Numerical Integrator And Calculator,ENIAC),如图1-1所示。
图1-1 电子数字积分计算机ENIAC
从技术上看,ENIAC采用十进制进行计算、二进制进行存储,在结构上没有明确的CPU概念,主要采用电子管作为基本电子元件,共使用了17 468个真空电子管,以及数千只二极管和数万只的电阻、电容等基本元器件。整台机器占地170平方米,重约30吨,功率为150千瓦,运算速度为每秒5 000次加法运算。这一速度虽然还远远比不上今天最普通的一台微型计算机,如表1-1所示,但在当时它已经成为运算速度上的绝对冠军,并且其运算的精度和准确度也是史无前例的。以圆周率(π)的计算为例,中国古代科学家祖冲之利用算筹,耗费15年心血,才把圆周率精确到小数点后7位数。一千年后,英国人香克斯以毕生精力致力于圆周率计算,精确到小数点后707位(在第528位时发生错误),而ENIAC仅用40秒就可准确无误地精确到香克斯一生计算所达到的位数。
表1-1 ENIAC与现代PC的比较
比较项 |
ENIAC(1942年) |
PC(2016年) |
---|---|---|
耗资 |
48万美元 |
500美元 |
重量 |
28吨 |
5千克 |
占地 |
170平方米 |
0.25平方米 |
功率 |
150千瓦 |
250瓦 |
主要原件 |
1.8万只电子管和1 500个继电器 |
100块集成电路(数千万只微型晶体管) |
运算速度 |
5 000次加法/秒(人类5次加法运算/秒) |
30亿次浮点运算/秒 |
ENIAC奠定了电子计算机的发展基础,在计算机史上具有跨时代的意义,它的问世标志着电子计算机时代的正式到来!
2.冯•诺依曼与EDVAC方案
1945年6月,数学家冯•诺依曼发表了电子离散变量自动电子计算机(Electronic Discrete variable Automatic Computer,EDVAC)方案,对存在缺陷的ENIAC提出了重大的改进理论。“冯•诺依曼原理”,即著名的“存储程序控制原理”作为该方案的核心内容被首次提出。其观点如下。
(1)计算机应由5个部分组成,包括运算器、控制器、存储器、输入设备和输出设备。ENIAC还没有很明晰的CPU概念,甚至完全没有内存概念。这不利于计算机各部分功能的设计和实现。冯•诺依曼明确了计算机由5个部分组成,并描述了这5个部分的职能和相互关系。
(2)采用二进制机器码进行存储和计算。ENIAC按十进制进行计算、按二进制进行存储,因此机器在计算结束时需把十进制数转换为二进制数进行存储,而当数据从存储器中取出给机器处理前又不得不再转变回十进制数,不停地在两种数制间进行切换严重影响计算效率。此外,十进制的方式会导致计算机的内部结构变得异常复杂。冯•诺依曼根据电子元件双稳态工作的特点,大胆建议抛弃十进制,在电子计算机中无论是数据还是指令全部采用二进制,并预言二进制的采用将简化机器的逻辑电路。实践已经证明了其正确性。
(3)把数据和运算指令存放在同一存储器中,计算机按照程序事先编排的顺序一步一步地取出运算指令,实现自动计算,即存储程序控制方式。
冯•诺依曼通过对ENIAC的考察,敏锐地抓住了它的最大弱点——没有真正的存储器。ENIAC只在20个暂存器(最多只能寄存20个10位的十进制数),它的程序是外插型的(用开关连线进行控制),指令存储在计算机的其他电路中。解题之前,必须先想好所需的全部指令,然后通过手工把相应的控制电路进行焊接连通。为了进行几分钟或几小时的高速计算,经常要花费几小时甚至几天的时间进行手工连线,严重制约了ENIAC的计算效率。
针对这个问题,冯•诺依曼创造性地提出了程序内存的思想:把运算指令和数据一同存放在存储器里。计算机只需要在存储器中按照程序事先编排的顺序一步一步地取出指令,就可以完全摆脱外界的影响,以自己可能的速度(电子的速度)自动地完成指令规定的操作,实现计算机的自动计算。
上述思想被称之为“冯•诺依曼原理和思想”,这一思想标志着电子计算机走向成熟,并已成为电子计算机设计的基本原则,影响至今。根据这一原理和思想而制造出的计算机被称为“冯•诺依曼机”。正是由于冯•诺依曼对现代电子计算机技术的突出贡献,他被誉为“现代计算机之父”,如图1-2所示。
图1-2 冯•诺依曼(1903~1957年)
1952年1月,EDVAC(Electronic Discrete Variable Automatic Computer)终于在宾夕法尼亚大学研制成功,如图1-3所示。它共使用了大约6 000个电子管和12 000个二极管,占地面积为45.5平方米,重达7.85吨,功率为56千瓦。与ENIAC相比,体积、重量、功率都减小了许多,而运算速度提高了10倍。冯•诺依曼的设计思想在这台计算机上得到了圆满的体现。可以说,EDVAC是第一台现代意义上的通用计算机。
图1-3 世界上第一台冯•诺依曼机EDVAC
60多年来,虽然现在的计算机系统从性能指标、运行速度、工作方式、应用领域和价格等方面都与EDVAC有了很大的差别,但究其基本原理和结构没有变化,都属于冯•诺依曼计算机。
随着科学技术的不断进步,人们逐渐意识到了“冯•诺依曼体系结构”的不足,它制约了计算机能力的进一步提高,进而又提出了“非冯•诺依曼体系结构”。关于“冯•诺依曼体系结构”的具体内容,我们将在第二章中详细讨论。
1.1.2 计算机的发展
ENIAC诞生后的短短几十年间,硬件技术,特别是半导体技术的突飞猛进,促使计算机不断更新换代。特别是体积小、价格低、功能强的微型计算机的出现,使得计算机迅速普及,进入了办公室和家庭。
1.电子计算机发展的4个阶段
根据计算机采用物理元器件的不同,如图1-4所示,可将电子计算机的发展主要划分为以下4个阶段。
图1-4 计算机中采用的物理元器件
(1)第一代(1946~1958年):电子管计算机。其基本特征是采用电子管作为计算机的逻辑元器件,使用水印延迟线、阴极射线管等材料制作主存储器,利用穿孔卡作为外部存储设备,每秒运算速度仅为几千次。第一代电子计算机体积庞大、运算速度低、造价昂贵、可靠性差、内存容量小,主要用于军事和科学计算。
(2)第二代(1959~1964年):晶体管计算机。其基本特征是采用晶体管作为计算机的逻辑元器件,使用磁性材料制造主存储器(磁芯存储器),利用磁鼓和磁盘作为辅助存储器。由于电子技术的发展,运算速度达每秒几万至几十万次,内存容量增至几十KB。
与第一代计算机相比,晶体管电子计算机无论是耗电量还是产生的热量都大大降低,而可靠性和计算机能力则大为提高。除了科学计算外,晶体管电子计算机还用于数据处理和事务处理。
这一时期出现了中、小型计算机,特别是廉价的小型数据处理用计算机也开始大规模量产。与此同时,计算机软件技术也有了较大发展,出现了FORTRAN、COBOL、ALGOL等高级语言。操作系统初步成型,使计算机的使用方式由手动操作改变为自动作业。
(3)第三代(1965~1970年):中、小规模集成电路计算机。其基本特征是采用小规模集成电路(Small Scale Integration,SSI)和中规模集成电路(Middle Scale Integration,MSI)作为计算机的逻辑元器件,使用硅半导体制造主存储器,内存容量增至几MB。
随着硅半导体技术的发展,集成电路工艺已经达到可以把十几个甚至上百个电子元器件组成的逻辑电路集成在指甲盖大小的单晶硅片上,其运算速度可达每秒几十万次到几百万次。第三代计算机体积更小、价格更低,软件逐步完善,操作系统开始出现。系统化、通用化和标准化是这一时期计算机设计的基本思想。
这一时期,高级程序语言有了很大的发展,操作系统日臻完善,具备了批处理、分时处理、实时处理等多种功能;数据库管理系统、通信处理系统等也在不断增添到软件子系统中,使计算机的使用效率显著提高,计算机开始广泛应用于各个领域。
(4)第四代(1971年至今):大规模、超大规模集成电路计算机。其特征是采用大规模集成电路(Large Scale Integration,LSI)和超大规模集成电路(Very Large Scale Integration,VLSI)技术。进入20世纪70年代以后,计算机用集成电路的集成度迅速从中、小规模发展到大规模、超大规模的水平,微处理器和微型计算机应运而生,运算速度可以达到上千万次至上亿次。
1981年8月12日,IBM公司的唐•埃斯特奇(被IBM公司内部尊称为“PC之父”)领导13人团队开发完成了世界上首款个人电脑——IBM PC5150,如图1-5所示。该机最大的特色是首次推出开放性架构,并附带了一本技术参考手册,这都成为后来PC的行业标准,掀开了改变世界历史性的一页。
图1-5 IBM PC5150
1984年1月,Apple公司推出了世界上首款采用图形界面的操作系统——System 1.0(早期为DOS系统,采用命令行界面),含有桌面、窗口、图标、光标、菜单和卷动栏等项目,如图1-6所示,并且第一次使个人计算机具有多媒体处理能力。
图1-6 System 1.0系统界面
1985年起,随着微型计算机的高速普及,实现其互联的局域网、广域网随即兴起,进一步推动计算机应用向网络化发展,计算机的发展进入了以计算机网络为特征的全新时代。
2.下一代计算机
硅芯片技术的高速发展同时也意味着硅技术越来越接近其物理极限,为此世界各国的研究人员正在加紧研究开发下一代计算机,俗称“第5代计算机”。计算机从器件的变革到体系结构的革命都将产生一次质变和飞跃。新型的量子计算机、神经网络计算机、生化计算机、光子计算机将在不久的未来逐步走进我们的生活。
(1)量子计算机。量子计算机是一类遵循量子力学规律进行高速数学和逻辑运算、存储及处理的量子物理设备。当某个设备是由量子元件组装,处理和计算的是量子信息,运行的是量子算法时,它就是量子计算机。量子计算机在安全通信上有巨大的潜力,这种超级安全通信被称为“量子密匙分配”,它允许某人发送信息给其他人,而只有使用量子密匙解密后才能阅读信息。如果第三方拦截到密匙,鉴于量子力学的“怪异魔力”,信息会变得毫无用处,也没人能够再读取它。
(2)神经网络计算机。人脑总体运行速度相当于每秒1 000万亿次的计算机功能,可将生物大脑神经网络视为一个大规模并行处理的、紧密耦合的、能自行重组的计算网络。从大脑工作的模型中抽取计算机设计模型,用许多处理机模仿人脑的神经元机构,将信息存储在神经元之间的联络中,并采用大量的并行分布式网络,就构成了神经网络计算机。
(3)生化计算机。在运行机理上,化学计算机以化学制品中的微观碳分子为信息载体来实现信息的传输与存储。DNA分子在酶的作用下可以从某基因代码通过生物化学反应转变为另一种基因代码,转变前的基因代码可以作为输入数据,反应后的基因代码可以作为运算结果,利用这一过程可以制成新型的生物计算机。生物计算机最大的优点是生物芯片的蛋白质具有生物活性,能够跟人体的组织结合在一起,特别是可以与人的大脑和神经系统有机地连接,使人机接口自然吻合,免除了繁琐的人机对话。这样,生物计算机就可以听人指挥,成为人脑的外延或扩充部分,还能够从人体的细胞中吸收营养来补充能量,不需要任何外界的能源。由于生物计算机的蛋白质分子具有自我组合的能力,从而使生物计算机具有自调节能力、自修复能力和自再生能力,更易于模拟人类大脑的功能。现今科学家已研制出了许多生物计算机的主要部件——生物芯片。
(4)光子计算机。光子计算机是用光子代替半导体芯片中的电子,以光互连来代替导线制成的数字计算机。与电的特性相比,光具有无法比拟的各种优点。光计算机是“光”导计算机,光在光介质中以许多个波长不同或波长相同而振动方向不同的光波传输,不存在寄生电阻、电容、电感和电子相互作用问题,光器件无电位差,因此光计算机的信息在传输中畸变或失真小,可在同一条狭窄的通道中传输数量大得难以置信的数据。
3.摩尔定律
1965年,英特尔(Intel)公司共同创始人之一戈登·摩尔在整理并绘制一份观察数据时发现了一个惊人的趋势:集成电路上可容纳的晶体管数每隔18个月左右就会增加一倍,性能提高一倍,价格同比下降一倍。就是现在所谓的“摩尔定律”。它所阐述的趋势一直延续多年且仍不同寻常的准确,该定律也成为许多计算机周边工业对于性能预测的基础,统治了硅谷乃至全球计算机行业整整40多年。
2000年以后,随着半导体技术越来越接近其物理极限,“摩尔定律”已面临失效。这预示着传统半导体计算机的更新速度已跟不上时代前进的步伐,许多国家及IT业巨头纷纷投入重金进行下一代计算机的研制工作。
4.计算机的未来
计算机未来的发展趋势是向多极化、智能化、网络化、虚拟化等方向发展。
(1)多极化。如今个人计算机,包括平板电脑、智能手机及穿戴设备等已席卷全球,但由于计算机应用的不断深入,对巨型机、大型机的需求也稳步增长。巨型、大型、小型、微型机各有自己的应用领域,形成了一种多极化的形势。例如,巨型计算机主要应用于天文、气象、地质、核反应、航天飞机和卫星轨道计算等尖端科学技术领域和国防事业领域,它标志着一个国家计算机技术的发展水平,是综合国力的一种体现。目前,我国研制的运算速度达每秒亿亿次、双精度浮点运算的巨型计算机“天河二号”已经投入运行,如图1-7所示。同时,科研人员还在研制更高速的巨型机。
图1-7 我国研制的“天河二号”超级计算机
(2)智能化。智能化使计算机具有模拟人的感觉和思维过程的能力,使计算机成为智能计算机。这也是目前正在研制的下一代计算机要实现的目标。智能化的研究包括模式识别、图像识别、自然语言的生成和理解、博弈、定理自动证明、自动程序设计、专家系统、学习系统和智能机器人等。目前,已研制出多种具有人的部分智能的机器人,如图1-8所示。
图1-8 日本研制的仿真机器人
(3)网络化。网络化是计算机发展的一个重要趋势。从单机走向联网是计算机应用发展的必然结果。计算机网络化就是指用现代通信技术和计算机技术把分布在不同地点的计算机互联起来,组成一个规模大、功能强、可以互相通信的网络结构。网络化的目的是使网络中的软件、硬件和数据等资源能被网络上的用户共享。目前,大到世界范围的通信网,小到实验室内部的局域网已经很普及,因特网(Internet)已经连接了包括我国在内的150多个国家和地区。由于计算机网络实现了多种资源的共享和处理,提高了资源的使用效率,因而深受广大用户的欢迎,得到了越来越广泛的应用。
(4)虚拟化。虚拟化就是将原本运行在真实环境中的计算机系统运行在虚拟出来的环境中,其主要目标是基础设施虚拟化、系统软件虚拟化和应用软件虚拟化等。特别是在因特网平台上,虚拟化使人们能够在任何时间、任何地方通过任何网络设备分享各种软、硬件服务。虚拟化的意义在于重新定义划分了IT资源,可以实现IT资源的动态分配、灵活调度和跨域共享,提高了IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。
1.1.3 计算机的特点
计算机之所以能在现代社会各领域获得广泛的应用,是与其自身特点分不开的。计算机的特点可概括为以下几点。
1.高度自动化
计算机可以不需要人工干预而自动、协调地完成各种运算或操作。这是因为人们将需要计算机完成的工作预先编成程序并存储在计算机中,使计算机能够在程序控制下自动完成工作。能自动连续地高速运行是计算机最突出的特点,这也是它与其他计算工具的本质区别。
2.运算速度快
计算机运算部件采用半导体电子元件,具有数学运算和逻辑运算能力,而且运算速度很快,如超级计算机可达每秒亿亿次浮点运算速度。随着科学技术的不断发展和人们对计算机要求的不断提高,其运算速度还将更快。这不仅极大地提高了人们的工作效率,还使许多复杂问题的运算有了实现的可能性。
3.计算精度高
计算机内用于表示数的位数越多,其计算精度就越高,有效位数可为十几位、几十位甚至达到几百位。
4.存储能力强
计算机中拥有容量很大的存储设备,可以存储所需要的原始数据信息、处理的中间结果和最后结果,还可以存储指挥计算机工作的程序指令。计算机不仅能保存大量文字、图像、声音等信息,还能对这些信息加以处理、分析、呈现和重新组合,以满足各种应用中对这些信息的需求。
5.逻辑判断能力强
计算机具有逻辑推理和判断能力,可以替代人脑的部分工作,如参与管理、指挥生产、自动驾驶等。随着计算机的不断发展,这种判断能力还在增强,人工智能型的计算机将具有思维和学习能力。
6.人机交互性好
用户可通过图形化的窗口、界面,以及鼠标、键盘、显示器等输入/输出设备完成对计算机的控制管理。
7.通用性好
目前,人类社会的各种信息都可以表示为二进制的数字信息,都能被计算机存储、识别和处理,所以计算机得以广泛地应用。由于运算器的数据逻辑部件既能进行算术运算又能进行逻辑运算,因而计算机既能进行数值计算,又能对各种非数值信息进行处理,如信息检索、图像处理、语音处理、逻辑判断等。正因为计算机具有极强的通用性,使它能应用于各行各业,渗透到人们的工作、学习和生活等各个方面。
1.1.4 计算机的分类
计算机的分类比较复杂,缺乏严格的标准。结合用途、费用、规模和性能等综合因素,计算机一般分为巨型计算机,大、中型计算机,小型计算机,个人计算机,工作站和嵌入式计算机等。
值得注意的是,这种分类只能限定于某个特定年代,因为计算机的发展速度太快了,我们现在所用的笔记本电脑、平板电脑以及智能手机的性能就远远强过以前的大型机,甚至巨型机。
1.巨型计算机
巨型计算机通常具有运算速度最快、处理的信息流量最大、容纳的用户最多、价格最高等特点,因此能处理其他计算机无法处理的复杂的、高强度的运算问题。高强度的运算意味着必须用高度复杂的数学模型来进行大规模的数据处理。例如,分子状态演算、宇宙起源模拟运算、实时天气预报、模拟核爆炸、实现卫星及飞船的空间导航、石油勘探、龙卷风席卷的尘埃运动追踪等都需要对海量的数据进行准确的操作、处理和分析。巨型计算机的运算速度一般可达100 000 000 MIPS(每秒百万亿条指令),并能容纳几百个用户同时工作,同时完成多个任务。
2.大、中型计算机
大、中型计算机的运行速度和价格都低于巨型计算机,典型的大、中型计算机的速度一般在10 000 MIPS(每秒百亿条指令)左右。它通常用于商业区域或政府部门,提供数据集中存储、处理和管理功能。在可靠性、安全性、集中控制要求很高的环境中,大、中型计算机是我们一种不错的选择。随着近年来云计算技术的兴起,大、中型机再次成为许多大型企业购买的首选。
3.小型计算机
由于大、中型计算机价格昂贵、操作复杂,只有大型企业才有能力购买,在集成电路技术的推动下,20世纪60年代开始出现小型计算机。小型计算机一般运行速度低于1 000 MIPS(每秒十亿条指令),价格比较便宜,规模和性能都比大、中型计算机小。这种机型适用于一些中、小企业,高等院校及地方政府部门进行科学研究、行政及事务管理等工作。例如,高等院校的计算机中心多以一台小型计算机为主机,配以几十台至上百台终端机,以满足大量学生学习、程序设计课程或上机考试的需要。
4.个人计算机
个人计算机(Personal Computer,PC)也称微型计算机,是一种基于微处理器的为解决个人需求而设计的计算机。它提供多种多样的应用功能,如文字处理、照片编辑、收发电子邮件、上网等。
根据尺寸大小,个人计算机分为桌面计算机和便携式计算机。便携式计算机又分为笔记本电脑、平板电脑等。笔记本电脑又称“膝上电脑”,过去它是移动办公的首选,如今更加轻薄的平板电脑也是一种较好的选择。
个人计算机的特点是轻、小、价廉、易用。在过去20多年中,PC使用的微处理器平均每一年半集成度增加一倍,处理速度提高一倍,价格却下降一半。随着芯片性能的提高,个人计算机与小型计算机的差距在逐渐缩小,并且大有用个人计算机替代小型计算机的发展趋势。
今天,个人计算机的应用已遍及各个领域。从工厂的生产控制到政府的办公自动化,从商店的数据处理到个人的学习娱乐,几乎无处不在、无所不能。目前,个人计算机已占整个计算机市场份额的95%以上。
5.工作站
工作站(Workstation)是一种速度更高、存储容量更大的个人计算机,即高档PC。它介于小型计算机和普通PC之间。工作站通常配有高档的CPU、高分辨率的大屏显示器、大容量的内存储器和外存储器,具有较强的信息处理能力、高性能的图形图像处理功能及高速网络,特别适合于三维建模、图像处理、动画设计和办公自动化等。
值得注意的是,这里所说的工作站和网络系统中的工作站有些区别。网络系统中的工作站是指在网络中扮演客户端的计算机,简称客户端(Client),与之对应的就是服务器(Server)。服务器在计算机网络中为客户端提供各种网络服务。例如,一台网站服务器就能够在网络中为用户提供在线网页浏览服务。因此,服务器不是指一种特定类型的计算机,任何个人计算机、工作站、大型机、中小型机或巨型机都可以配置成一台服务器。
6.嵌入式计算机
嵌入式计算机是一种使用单片机技术或嵌入式芯片技术构建的专用计算机系统,包括POS机(电子收款机)、ATM机(自动柜员机)、工业控制系统、各种自动监控系统等。典型的单片机或嵌入式芯片有Intel 8051系列、Z80系列、ARM系列、Power PC系列等。嵌入式技术的应用使各种机电设备具有智能化的特点。例如,在手机中集成嵌入式ARM芯片,利用安卓(Android)软件系统,就使得手机具有了移动通信、上网、摄影、播放MP3、全球定位等各种功能。由于嵌入式芯片性能飞速提升,其应用领域也越来越广泛,如今它集文字处理、电子表格、移动存储、电子邮件、Web访问、个人理财管理、移动通信、数码相机、数码音乐和视频播放、全球定位系统(Global Positioning System,GPS)、电子地图等功能于一身,因而使得微型计算机与嵌入式计算机(如智能手机)之间的差距越来越小。
1.1.5 计算机的应用
计算机最初的应用是科学计算,后来随着计算机技术的发展,计算机的计算能力日益强大,计算范围日益广泛,计算内容日益丰富,计算机的应用领域也日益广泛。归纳起来,计算机的应用主要表现在以下几个方面。
1.科学计算
科学计算也称数值计算,是指利用计算机完成科学研究和工程技术中提出的数学问题的计算。早期的计算机主要应用于科学计算。目前,科学计算仍然是计算机应用的一个重要领域。随着计算机技术的发展,其计算能力越来越强,计算速度越来越快,计算精度也越来越高。利用计算机进行数值计算,可以节省大量的时间、人力和物力,解决人工无法解决的复杂计算问题。
2.信息管理
信息管理也称非数值计算,是指利用计算机对数据进行及时的记录、整理、计算,并将其加工成人们所需要的形式,如企业管理、物资管理、报表统计、信息检索等。信息管理是目前计算机应用最广泛的一个领域,如股票信息的分析与管理,如图1-9所示。
图1-9 股票分析系统
3.过程控制
过程控制又称实时控制,是指利用计算机及时采集数据,将数据处理后,按最佳值迅速地对控制对象进行控制,使被控对象能够正确地完成物体的生产、制造和运行。现代工业由于生产规模不断扩大,技术、工艺日趋复杂,从而对实现生产过程自动化控制系统的要求也日益增高。利用计算机进行过程控制,不仅可以大大提高自动化控制水平,而且可以提高控制的及时性和准确性,从而改善劳动条件、提高质量、节约能源、降低成本。计算机过程控制在冶金、石油、化工、纺织、机械、航天等领域都得到了广泛的应用。
4.辅助技术
计算机作为辅助工具,目前已被广泛应用于各行各业,辅助人们进行各个领域的工作,形成了一系列的综合应用,主要包括计算机辅助设计(Computer Aided Design,CAD)、计算机辅助制造(Computer Aided Manufacturing,CAM)、计算机辅助测试(Computer Aided Testing,CAT)、计算机辅助教学(Computer Aided Instruction,CAI)等,如图1-10所示。
图1-10 使用专业CAD软件制作的室内装修效果图
5.人工智能
人工智能(Artifical Intelligence,AI)是指利用计算机模拟人类的某些智能活动和行为的理论、技术和应用。人工智能是计算机应用研究最前沿的学科,这方面的研究和应用正处于发展阶段。智能机器人是计算机人工智能模拟的典型例子,如图1-11所示。
图1-11 智能机器人
6.多媒体应用
多媒体是计算机和信息界里的一个新的应用领域。通常所说的“多媒体”(Multimedia)是一种以交互方式将文本(Text)、图形(Graphics)、音频(Audio)、视频(Video)、动画(Animation)等多种媒体信息,经过计算机设备的获取、存储、操作、编辑等处理后,以单独或合成的形态表现出来的技术和方法。多媒体技术拓展了计算机应用领域,使计算机渗透并广泛应用于教育、服务、广告、文化、娱乐、家庭、现代商业、通信、艺术等人类生活和工作的各个领域。
多媒体正改变着人类的生活和工作方式,为人类成功塑造了一个绚丽多彩的数字化多媒体世界。如图1-12所示为多媒体教学。
图1-12 多媒体教学
7.网络通信
计算机技术和数字通信技术发展并相融合产生了计算机网络,它利用通信设备和线路将地理位置不同、功能独立的多台计算机互相连接,得以实现信息交换、资源共享和分布式处理。计算机网络是当前计算机应用的一个重要领域。通过计算机网络把多个独立的计算机系统联系在一起,实现不同地域、不同国家、不同民族、不同行业、不同组织的人们的互联,改变了人们获取信息的方式,并逐步改变着各行各业人们的工作、生活与思维方式。
1.2 计算机中信息的表示与编码
设计计算机的最初目的是进行数值计算,所以计算机中首先存储和表示的数据就是数值信息。但随着计算机应用的发展,现在的计算机数据以不同的形式出现,如数字、文字、声音、图形、视频信息等,如图1-13所示。但是,在计算机内部这些数据还是以数字形式存储和处理的。数据输入时要转换成二进制代码,输出时要还原成其原来的形式。因此,掌握信息编码的概念和处理技术是至关重要的。我们将一般形式的数据信息转换成二进制代码形式的过程称为信息的编码;反之,称为解码(也称译码)。不同类型的数据信息的编码方式不同。
图1-13 信息的分类与表现形式
1.2.1 数制及其转换
1.数字体系
我们通常使用数码符号(简称数符)来表示数字,如罗马数字、阿拉伯数字,如图1-14所示。但在任何语言中的数符数量都是有限的,这就意味着在我们在表示数字的时候,数符需要被重复使用。为了重复使用这些有限的数符,人类在长期的实践中摸索出数字的两类表示体系:位置化数字体系和非位置化数字体系。
图1-14 采用罗马数字和阿拉伯数字的手表
(1)位置化数字体系。位置化数字体系使用相同的数码符号且数值大小与位置有关(数符依据位置的不同,代表不同的数量)。例如,阿拉伯数字10和1 000中都含有1,但二者所表示的数量大小却相差100倍。
(2)非位置化数字体系。非位置化数字体系使用相同的数码符号且数值大小与位置无关(每个数符都代表固定的数量,不随其位置的变化而变化)。例如,罗马数字MC和MCⅢ中都含有C,但二者所表示的数量大小相同(都等于阿拉伯数字100)。
由于计算机使用的是位置化数字体系,因此在以后的学习中,我们讨论的都是位置化数字体系。
2.数制及其属性
(1)数制。数制是一种表示和计算数的方法。日常生活中,我们习惯用十进制记数,有时也采用别的进制记数,例如,计算时间用六十进制、计算星期用七进制、计算月份用十二进制等。在计算机中表示和处理数据常用二进制、八进制和十六进制。
(2)数制的3个属性。数制具有以下3个属性。
① 基数:指数制中所用到的数码符号的个数。
例如,十进制数用0、1、2、3、4、5、6、7、8、9 十个不同的数码符号表示,基数为10;而二进制数用0、1两个不同的数码符号表示,基数为2。
② 计数规则:指数制的进位和借位规则。
例如,十进制数的进位规则是“逢十进一”,借位规则是“借一当十”,如图1-15所示。
图1-15 十进制加减法
二进制数的进位规则是“逢二进一”,借位规则是“借一当二”,如图1-16所示。
图1-16 二进制加减法
③ 位权:不同位置上的1所表示的数值大小即为该位的位权。
例如,十进制数 111.11 = 1×102 + 1×101 +1×100 + 1×10-1 +1×10-2 ,其中,102 (100)、101 (10)、100 (1)、10-1 (0.1)、10-2 (0.01) 就称为该十进制数各个位置上的位权。
二进制数 111.11 = 1×22 +1×21 +1×20 +1×2-1 +1×2-2 ,其中,22 (4) 、21 (2) 、20 (1)、2-1 (0.5)、2-2 (0.25)就称为该二进制数各个位置上的位权。
任何一种数制的数都可以按位权进行展开,且展开之后的结果为十进制数,我们称这种方法为“位权展开法”,也称“幂级数展开法”。
例如,(101 . 01)B = 1×22 +0×21 +1×20 +0×2−1 +1×2−2 =(5.25)D,展开结果是十进制数5.25,其中,22、21、20、2−1、2−2 称为该二进制数各个位置上的位权。
(257 . 2)O = 2×82 +5×81 +7×80 +2×8−1 =(175.25)D,展开结果是十进制数175.25,其中,82、81、80、8−1 称为该八进制数各个位置上的位权。
(A4D . 4)H = 10×162 +4×161 +13×160 +4×16-1 =(2637.25)D,展开结果是十进制数2637.25,其中,162、161、160、16-1 称为该十六进制数各个位置上的位权。
3.常用数制介绍
(1)十进制数(Decimal)。具体介绍如下。
基数及数码:基数为10,由0、1、2、3、4、5、6、7、8、9这10个不同的基本数码符号构成。
计数规则:逢十进一;借一当十。
位权:整数部分第i位的位权为10 i –1 ;小数部分第j位的位权为10 –j。
字母表示:在十进制数的后面用大写字母D标示,如(120.45)D。
现实意义与由来:十进制是人们日常生活中最习惯使用的数制,这可能与古人自然而然地首先使用十个手指计数有关。
(2)二进制数(Binary)。具体介绍如下。
基数及数码:基数为2,由0、1 这两个不同的基本数码符号构成。
计数规则:逢二进一 ;借一当二。
位权:整数部分第i位的位权为2 i–1 ;小数部分第j位的位权为2 –j。
字母表示:在二进制数的后面用大写字母B标示,如(101. 11)B。
现实意义与由来:二进制是计算机中使用最广泛的数制,这是因为冯•诺依曼型计算机中的数据以半导体元件的物理状态表示,两种稳定状态的元件最容易找到且最稳定,如继电器的接通和断开、晶体管的导通和截止、电脉冲电平的高和低等。而要找到具有10种稳定状态的元件来对应十进制的10个数码就困难得多。除此之外,二进制还与逻辑量天然吻合(0和1两个数码正好对应逻辑量False和True),可简化逻辑电路。正是因为电子原件的上述特性,二进制在计算机内部使用是再自然不过的事了。
(3)八进制数(Octal)。具体介绍如下。
基数及数码:基数为8,由0、1、2、3、4、5、6、7 这8个不同的基本数码构成。
计数规则:逢八进一 ;借一当八。
位权:整数部分第i位的位权为8 i–1 ;小数部分第j位的位权为8 –j。
字母表示:在八进制数的后面用大写字母O(或Q)标示,如(174. 4)。
(4)十六进制数(Hexadecimal)。具体介绍如下。
基数及数码:基数为16,由0、1、2、3、4、5、6、7、8、9、A(10)、B(11)、C(12)、D(13)、E(14) 、F(15) 这16个不同的基本数码符号构成。
进位规则:逢十六进一 ;借一当十六。
位权:整数部分第i位的位权为16 i-1 ;小数部分第j位的位权为16 -j。
字母表示:在十六进制数的后面用大写字母H标示,如(1AF.8)H。
现实意义与由来:八进制数(23) 、十六进制数(24)与二进制数存在联系。8等于2的3次方(1个八进制数可以用3个二进制数来表示,其读写效率是二进制的3倍);16等于2的4次方(1个十六进制数可以用4个二进制数来表示,其读写效率是二进制的4倍),所以计算机中冗长的二进制数据与短小的八进制及十六进制数据之间的换算都十分简便。这样一来,程序员们既避免了二进制数的冗长给读写带来的不便(二进制的弱点),又不影响他们关心二进制数每位情况的心思。因此,八进制、特别是十六进制已成为人机交流中最受欢迎的数制。
4.常用数制间的转换
微型计算机内部采用二进制数操作,软件编程时通常采用八进制数和十六进制数,而人们日常习惯使用十进制数,因而要求计算机能对不同数制的数进行快速转换。当然,软件编程人员也必须熟悉这些数制间的转换方法。
(1)R进制转换为十进制。通过“位权展开法”,可以将R进制数转换为等值的十进制数。其位权展开过程式如下。
(an…a2 a1 . a-1…a-m)R = an×Rn-1 +… +a2×R1 +a1×R0 +a-1×R-1 +…+a-m×R-m
【例1-1】 分别把二进制数101 . 01、八进制数257 . 2和十六进制数A5E . 2转换成十进制数。
解:(101 . 01)B = 1×22 +0×21 +1×20 +0×2-1 +1×2-2 =(5 . 25)D
(257 . 2)O = 2×82 +5×81 +7×80 +2×8-1 =(175 . 25)D
(A5E . 2)H = 10×162 +5×161 +14×160 +2×16-1 =(2654 . 125)D
(2)十进制转换为R进制。整数部分和小数部分的转换方法是不同的,下面分别加以介绍。
① 整数部分的转换:采用“除基取余法”,即对十进制整数部分反复除以基数R,直到商为0为止,再把历次相除的余数按逆序(先得到的余数为低位,后得到的余数为高位)进行读取,即为R进制整数部分各位的数码。
【例1-2】 把十进制数25转换成二进制数。
解:
所以,(25)D=(11001)B。
第一位余数是最低位,最后一位余数是最高位。
② 小数部分的转换:采用“乘基取整法”,即对十进制数的小数部分反复乘以基数R,直到乘积的小数部分为0(若不为0,则满足精度要求)为止,再把历次乘积的整数部分按顺序(先得到的整数为高位,后得到的整数为低位) 读取,即为R进制小数部分各位的数码。
【例1-3】 把十进制数0.625转换成二进制数。
解:
所以,(0.625)D=(0.101)B。
第一位整数是最高位,最后一位整数是最低位。
③ 对于既有整数又有小数的十进制数,可以先将整数部分和小数部分分别进行转换后,再合并得到所要的结果。
【例1-4】 把十进制数29.375转换成二进制数。
解:
所以,(29.375)D=(11101.011)B。
同理,采用“除8取余数,乘8取整数”的方法可将十进制数转换为八进制数;采用“除16取余数,乘16取整数”的方法可将十进制数转换为十六进制数。
(3)二进制数与八进制数、十六进制数的转换。下面对其分别加以介绍。
① 二进制数与八进制数的转换。由于八进制数的基数为8,二进制数的基数为2,两者满足8 = 23,故每1位八进制数可转换为等值的3位二进制数,反之亦然。因此,将八进制数转换为二进制数时,可采用“分组法”,即只需将八进制数的每1位直接转换成对应的3位二进制数即可。
【例1-5】 把二进制数10111011.10111转换成八进制数。
解: ( 010 111 011 . 101 110 )B
↓ ↓ ↓ ↓ ↓
( 2 7 3 . 5 6)0 所以,(10111011.10111)B=(273.56)0。
二进制数转换成八进制数进行分组时,以小数点为界,整数部分从右往左3位为一组;小数部分从左往右3位为一组。若位数不够分组,只需在整数最高位前或小数最低位后添0补位。
【例1-6】 把八进制数273.56转换成二进制数。
解: ( 2 7 3 . 5 6 )0
↓ ↓ ↓ ↓ ↓ (010 111 011 . 101 110)B 所以,(273.56)0=(10111011.10111)B。
② 二进制数与十六进制数的转换。同理,由于十六进制数的基数为16,二进制数的基数为2,两者满足16 = 24,故每1位八进制数可转换为等值的4位二进制数,反之亦然。因此,将十六进制数转换为二进制数时,可采用“分组法”,即只需将十六进制数的每1位直接转换成对应的4位二进制数即可。
【例1-7】 把二进制数1011001101.10101转换成十六进制数。
解:( 0010 1100 1101 . 1010 1000 )B
↓ ↓ ↓ ↓ ↓ ( 2 C D . A 8)H 所以,(1011001101.10101)B=(2CD.A8)H。
二进制数转换成十六进制数进行分组时,以小数点为界,整数部分从右往左4位为一组;小数部分从左往右4位为一组。若位数不够分组,只需在整数最高位前或小数最低位后添0补位。
【例1-8】 把十六进制数A7F.C3转换成二进制数。
解: ( A 7 F . C 3 )H
↓ ↓ ↓ ↓ ↓ (1010 0111 1111 . 1100 0011)B 所以,(A7F.C3)H=(101001111111.11000011)B。
③ 八进制数与十六进制数的转换。八进制数与十六进制数之间的转换,一般以二进制作为桥梁,如图1-17所示,即先将八进制数或十六进制数转换为二进制数,再将二进制数转换成十六进制数或八进制数。
图1-17 二进制是进制转换的桥梁
【例1-9】 把八进制数351.74转换成十六进制数。
解: ( 3 5 1 . 2 7 )0 ↓ ↓ ↓ ↓ ↓
(011 101 001 . 010 111)B
重新分组:
( 1110 1001 . 0101 1100 )B
↓ ↓ ↓ ↓
(E 9 . 5 C)H
所以,(351.27)0=(E9.5C)H。
1.2.2 数值信息的表示
数值信息在存储到计算机中之前,被转换成计算机可以识别的二进制形式的数据,但这里还需要解决以下问题。
问题1.如何表示正负号。
对于正负号问题,计算机可做带符号位处理和不带符号位处理。带符号位处理时,可将正负号进行数字化表示(二进制0表示正号;1表示负号)后再进行存储。不带符号位处理,即不必存储符号位,这就意味着所分配的存储单元都可以用来存储数字,提高了存储效率。本书在接下来的章节中主要讨论带符号位的处理。
问题2.如何表示小数点。
对于小数点问题,计算机中使用两种不同的表示格式:定点格式和浮点格式。若数的小数点位置固定不变则称为定点数;反之,若小数点的位置不固定则称为浮点数。
1.机器数
在日常生活中,我们用正号(+)和负号(−)表示符号位;加绝对值表示数值位。我们把这种形式的数称为真值,如(+11 )10、(−11 )10、(+10110 )2、(−10110 )2。
在计算机中,数的正负符号位也用二进制代码表示。规定最高位为符号位(用0表示“+”号;1表示“−”号),其余位仍然表示数值位。我们把这种在计算机内使用,连同正负号一起数字化的二进制数称为机器数(或机器码)。如:
(+10110)2 =(010110)2 (−10110)2 =(110110)2
↓ ↓ ↓ ↓
真值 机器数 真值 机器数
机器数在进行计算时,符号位也一同参与运算。如:
我们发现,直接使用机器数进行运算时,会遇到减法问题。于是,我们试图采取对机器数编码来解决问题。
2.机器数的3种编码方式
仅根据数值位表示方法的不同,机器数有3种编码方式,即原码、反码和补码,用以解决计算问题。
(1)原码。符号位用“0”表示正号,用“1”表示负号 ;数值位与真值保持一致。例如(为把问题简单化,我们假设机器字长为5位):
[+1101 ]真值 → [ 01101 ]原码 [-1101 ]真值 → [ 11101 ]原码
(2)反码。正数的反码与原码保持一致;负数的反码将原码的数值位按位取反(即 “1”变“0”;“0”变“1”),符号位不变。例如:
[+1101 ]真值 → [ 01101 ]原码 → [ 01101 ]反码 [-1101 ]真值 → [ 11101 ]原码 → [ 10010 ]反码
(3)补码。正数的补码与原码保持一致;负数的补码将反码最低数值位加1,符号位不变。例如:
[+1101 ]真值 → [ 01101 ]原码 → [ 01101 ]反码 → [ 01101 ]补码
[-1101 ]真值 → [ 11101 ]原码 → [ 10010 ]反码 → [ 10011 ]补码
用补码进行计算时,可以统一加减法。将机器数表示成补码形式后,可解决困扰机器数多时的减法问题。因此,计算机中运算方法的基本思想是:各种复杂的运算处理最终都可分解为加、减、乘、除的四则运算与基本的逻辑运算,而四则运算的核心是加法运算(CPU的运算器中只有加法器)。可以通过补码运算化减为加实现减法运算,加减运算配合移位操作可以实现乘除运算。
(4)存储带符号整数。几乎所有的计算机都使用二进制补码来存储带符号整数。因为计算机CPU的运算器中只有加法器,而没有减法器,要把减法转化成加法来计算。于是,把机器数按补码形式进行存储,无疑是最好的选择。
【例1-10】 把十进制数+5表示成8位二进制补码。
解:(+5)D →(+00000101)真值 → (00000101)原码 → (00000101)反码 →(00000101)补码
【例1-11】 把十进制数-5表示成8位二进制补码,如图1-18所示。
解:(-5)D →(−00000101)真值 →(10000101)原码 →(11111010)反码 → (11111011)补码
图1-18 十进制负整数与3种编码之间的转换
【例1-12】 把二进制补码11111011还原成十进制整数。
解:(11111011)补码 →(11111010)反码 →(10000101)原码 →(−00000101)真值 →(−5)D
3.机器数的两种存储格式
根据小数点位置固定与否,机器数又可以分为定点数和浮点数。
(1)定点数。若数的小数点位置固定不变则称为定点数。定点数又可分为定点小数和定点整数。
① 定点小数:是指小数点的位置固定在符号位与最高数据位之间。按此规则,定点小数的形式为X=X0 . X1X2…Xn ,其中,X0为符号位,X1~Xn为数值位(也称尾数),X1为数值最高有效位,如图1-19所示。对用m+1个二进制位表示的定点小数来说,数值表示范围为∣N∣≤1−2m 。
图1-19 定点小数和定点整数的存储格式
② 定点整数:是指小数点的位置固定在最低数据位的右侧。按此规则,定点整数的形式为X=X0X1X2…Xn ,其中,X0为符号位,X1~Xn为数值位,Xn为数值最低有效位。对用n+1个二进制位表示的定点整数来说,此时数值范围为0≤N≤2n+1−1。
定点数的小数点实际上只是一种人为规定,在机器中并没有专门的硬件设备来表示。故对于计算机本身而言,处理定点小数和处理定点整数在硬件构造上并无差异。
在计算机中,一般用8位、16位和32位等表示定点数(以16位最为常见)。在定点数中,无论是定点小数还是定点整数,计算机所处理的数必须在该定点数所能表示的范围之内,否则会发生溢出。溢出又可分为上溢和下溢。当数据大于定点数所能表示的最大值时,计算机将无法显示,称为上溢;当数据小于定点数所能表示的最小值时,计算机将其做“0”处理,称为下溢。当有溢出发生时,CPU中的状态寄存器PSW中的溢出标志位将置位,并进行溢出处理。
通常,整数多采用定点数表示。由于定点数的表示较为单一、呆板,数值的表示范围小、精度低且运算时易发生溢出,所以在数值计算时,大多采用浮点数来表示实数(带有整数部分和小数部分的数)。
(2)浮点数。若数的小数点位置不固定,则称之为浮点数。浮点表示法类似于十进制的科学计数法,如二进制数1110.011可表示为M = 1110.011 = 0.1110011×2 + 4 = 1110011×2−3 。这种表示法的好处显而易见,即使写在一张纸上,科学计数法也更短且更省空间。
① 浮点数的一般形式。根据以上形式可写出二进制所表示的浮点数的一般形式为M=±S×2±P ,如图1-20所示。其中,纯小数S为数M的尾数,表示数的精度;数符Sf为尾数的符号位,表示数的正负;指数P为数M的阶码(也称指数位),表示小数点浮动的位置(或表示数的范围大小);阶符Pf为阶码P的符号位,表示小数点浮动的方向(往左移还是往右移)。
图1-20 浮点数存储格式
与定点数相比,用浮点数表示的数所表示的范围更大,精度也更高。
② 浮点数的规范化表示。为了浮点数表示的唯一性,并充分利用尾数的二进制位来表示更多的有效数字(提高精度),我们通常采用规格化形式表示浮点数,即将尾数的绝对值限定在以下范围内。
把不满足这一表示要求的尾数,变成满足这一表示要求的尾数的操作过程,称为浮点数的规格化处理,通过尾数移位和修改阶码来实现。
在规格化数中,若尾数用补码表示,则当M≥0时,尾数格式为S = 0.1xx…x ;当M<0时,尾数格式为S = 1.0xx…x。
因此,补码表示时,若尾数的符号位与数值最高位不一致,即为规格化数。
【例1-13】 把十进制数7.5表示成二进制浮点规格化数。
解:将7.5转化为二进制数为111.1,111.1的规格化表示为0.1111×23。3是正数,故阶符为0,阶码为3,用二进制11表示。7.5是正数,故数符为0,尾数为0.1111,用二进制1111表示。拼接后为0 11 0 1111。
所以,二进制浮点格式化数为01101111。
小数点和尾数左边的位0并没有存储,它们是隐含的。
③ 存储实数与IEEE标准。
电气和电子工程师学会(Institute of Electrical and Electronics Engineers,IEEE)已定义了几种存储浮点数的标准。这里我们讨论其中两种最常见的——单精度和双进度。
单精度数格式,如图1-21所示,采用总共32位来存储一个浮点表示法的实数,其中,符号位占用1位(0为正;1为负);指数位占用8位(采用移码表示,偏移量为27−1 = 127);尾数位占用23位(无符号数)。因偏移量为127,所以该标准有时也称为“余127码”(Excess_127)。
图1-21 单精度存储格式
双精度数格式,如图1-22所示,采用总共64位来存储一个浮点表示法的实数,其中,符号位占用1位(0为正;1为负);指数位占用11位(采用移码表示,偏移量位为210−1 = 1023);尾数位占用52位(无符号数)。因偏移量为1023,所以该标准有时也称为“余1023码”(Excess_1023)。
图1-22 双精度存储格式
(3)定点数与浮点数的比较。具体比较如下。
表示范围:浮点表示法所能表示的数值范围远远大于定点表示法。
表示精度:对于字长相同的定点数与浮点数来说,浮点数虽然扩大了数的表示范围,但这是以降低精度为代价的,也就是说数轴上各点的排列更稀疏了。
运算复杂度:浮点运算要比定点运算复杂。
溢出难易度:定点运算时,当运算结果超出数的表示范围时,就发生溢出。浮点运算时,当运算结果超出尾数S的表示范围时,不一定溢出。只有当阶码P也超出所能表示的范围时,才一定发生溢出。因此,浮点数的健壮性较定点数更好。
1.2.3 信息单位
1948年,香农发表论文《通信的数学理论》,提出“信息熵”的概念,才解决了对信息的量化度量问题。文中香农首次用数学语言阐明了概率与信息冗余度之间的关系——任何信息都存在冗余。他借鉴热力学熵的概念,把信息中排除冗余后的平均信息量称为信息熵,并给出了计算信息熵的数学表达式,即著名的信息熵计算公式:
香农把信息熵定义为离散随机事件的出现概率。这表明了他对信息的理解,即信息是用来减少随机不定性的东西。
如果上式中的对数log是以2为底,那么计算出的信息熵就以比特(bit)为单位。今天在计算机和通信中广泛使用的字节(Byte)、千字节(KB)、兆字节(MB)、吉字节(GB)等单位都是从比特(bit)演化而来的。比特的出现标志着人类知道了如何计量信息量。
正是由于香农的信息论为明确什么是信息量做出了决定性的贡献,因此他被誉为“信息论之父”,如图1-23所示。
图1-23 香农(1916~2001年)
1.计算机中最小的信息量单位——bit
单位由来:信息熵公式中对数log若以2为底,则计算出来的信息熵就以bit为单位。bit来自英文binary digit,直译为二进制位,音译为比特位,简称位。
单位规定:由信息熵公式可知,如果一个事件发生的概率是50%,那么它恰好包含了1比特的信息。在计算机科学中,我们把1位二进制数码所能表示的信息量称为1 bit(1比特)。它是构成信息的最小信息量单位。因此,愈多的比特位组合在一起,就可以表现愈复杂的信息。
位与信息量间的增长关系:一个二进制位只能表示0或1两种状态,要表示更多信息,就得把多个位组合成一个整体。例如:
1 bit所表示的信息量为21 ,取值为0,1。
2 bit所表示的信息量为22 ,取值为00,01,10,11。
3 bit所表示的信息量为23 ,取值为000,001,010,100,011,101,110,111。
由此看来,信息用二进制表示时,寄存器每增加1位,信息量就增长1倍。
2.计算机中最基本的信息量单位——Byte
单位由来,从比特(bit)演化而来,是计算机中最基本的信息量单位。
字节多用于计算存储容量和传输容量。很多有关信息识别、存储和处理的单位都是在字节基础上制定的,因此字节也被认为是计算机中最基本的信息识别、存储和处理单位。
例如,内存按字节划分存储单元(微机内存中的1个小格就只能存放一位数据,8个连续的小格子合在一起就组成一个字节),并按字节进行编址,即为内存地址。虽然计算机中信息存储的最小单位是位,但硬件(如CPU)通过地址总线所能访问或控制的最小存储单元是字节。
单位规定:我们把8个连续的二进制位称为1个字节,即8 bit = 1 Byte (简写为B)。如果要控制某1位,我们是通过位运算符和软件来实现的。
衍生单位:由于字节仍是一个很小的容量单位,为了方便标识和计算,KB、MB、GB、TB、PB等大容量单位被广泛使用。它们之间的数量转换关系如下。
千字节KB:1 KB = 210 B (1 024 B)。
兆字节MB:1 MB = 210 KB (1 024 KB)。
吉字节GB:1 GB = 210 MB (1 024 MB)。
太字节TB:1 TB = 210 GB (1 024 GB)。
皮字节PB:1 PB = 210 TB (1 024 TB)。
3.计算机中最常用的信息量处理单位—— word
单位由来:从字节(Byte)演化而来。计算机进行数据处理时,一次存取、加工和传送的二进制位组,称为一个字。通常一个字是由一个或多个字节所组成的二进制位组。
单位规定:CPU在单位时间内一次所能处理的二进制位组称为字。我们把一个字的长度(即二进制位组的位数)称为字长,单位为bit。字长是计算机系统结构中的一个重要的性能指标,如32 bit处理器、64 bit处理器。
1.2.4 非数值信息的表示
编码(或代码)通常指一种在人和机器之间进行信息转换的系统体系。编码是人们在实践中逐步创造的一种用较少的符号来表达较复杂信息的表示方法。如我们前面谈到的数字,实际上就是一种编码,用一串数符代表规模更大的数。人们用0~9这10个数字的组合,表达的概念远不止10个数。编码的基本目的是为了信息交流。人们研究编码,就是为了以更简便的形式表达更丰富的信息。
随着现代计算机运用的深入,计算机不仅仅用来进行科学计算,实际上更多地是用于处理人们日常工作和生活中最常使用的信息,也就是所谓的非数值型数据,包括语言文字、逻辑语言等非数值信息。计算机中使用了不同的编码来表示和存储数字、文字符号、声音、图片和图像(视频)信息。计算机科学中,研究编码的目的是为了方便计算机表示、处理和存储各种类型的信息。但由于计算机硬件能够直接识别和处理的只是0、1这样的二进制信息,因此必须研究在计算机中如何用二进制代码来表示和处理这些非数值型数据。
1.字符的编码
字符是非数值型数据的基础,字符与字符串数据是计算机中用得最多的非数值型数据。在使用计算机的过程中,人们需要利用字符与字符串编写程序,表示文字及各类信息,以便与计算机进行交流。为了使计算机硬件能够识别和处理字符,必须对字符按一定规则用二进制进行编码,使得系统里的每一个字母有唯一的编码。文本中还存在数字和标点符号,所以也必须有它们的编码。简单地说,所有的字母、数字和符号都要编码,这样的系统称为字符编码集。
计算机是美国人首先发明的,他们最先制定了符合他们使用需要的美国信息交换标准码(American Standard Code for Information Interchange,ASCII)。
ASCII是由美国国家标准学会(American National Standard Institute,ANSI)制定的标准单字节字符编码方案,用于基于文本的数据。它最初是ANSI供不同计算机在相互通信时用来作为共同遵守的西文字符编码标准,后被国际标准化组织(International Organization for Standardization,ISO)定为国际标准,称为ISO 646标准,适用于所有拉丁文字母。
ASCII使用指定的7位或8位二进制数组合来表示128或256种可能的字符。
(1)标准ASCII。标准ASCII表如图1-24所示,使用7位二进制数来表示所有的大写和小写字母、数字0~9、标点符号以及在美式英语中使用的特殊控制字符。其中,0~32及127(共34个)为控制字符或通信专用字符(其余为可显示字符)。控制符有LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通信专用字符有SOH(文头)、EOT(文尾)、ACK(确认)等。
图1-24 标准ASCII表
33~126(共94个)是字符。其中,48~58为0~9的阿拉伯数字;65~90为26个大写英文字母,97~122为26个小写英文字母,其余为一些标点符号、运算符号等。
值得注意的是,虽然标准ASCII码是7位编码,但由于计算机的基本处理单位为字节,因此以一个字节来存放一个标准ASCII码。其中,每个字节中的最高位在数据传输时用来作为奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定,正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位添1;偶校验规定,正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位添1。
(2)扩展ASCII。扩展ASCII采用8位二进制数进行编码,共256个字符。前128个编码为标准ASCII码,后128个称为扩展ASCII,许多系统都支持使用扩展ASCII。扩展ASCII允许将每个字符的第8位用于确定附加的128个特殊符号字符、外来语字母和图形符号。
ASCII是计算机世界里最重要的标准,但它存在严重的国际化问题。ASCII只适用于美国,它并不完全适用于其他以英语为主要语言的国家,更不用说在欧洲一些国家使用的非拉丁字母,包括希腊文、阿拉伯文、希伯来文和西里尔文等。对于东方以汉字为代表的象形文字巨大的集合更是无能为力。
2.中文汉字的编码
汉字也是字符。与西文字符相比,汉字数量大、字形复杂、同音字多,这就给汉字在计算机内部的存储、传输、交换、输入、输出等带来了一系列的问题。为了能直接使用西文标准键盘输入汉字,还必须为汉字设计相应的输入编码,以适应计算机处理汉字的需要。
(1)国标码。1980年,我国颁布《信息交换用汉字编码字符集基本集》,代号为GB 2312—1980,是国家规定的用于汉字信息处理使用的代码依据,这种编码称为国标码。
在国标码的字符集中共收录了6 763个常用汉字和682个非汉字字符(图形、符号)。汉字被分为两级,其中,一级汉字3 755个,以汉语拼音为序排列;二级汉字3 008个,以偏旁部首进行排列。
国际码采用16位的二进制数进行编码,即双字节字符集(double-byte character set,DBCS)。理论上最多可以表示256×256=65 536个汉字。
(2)机内码。由于在计算机内部是以字节(8位)为单位对信息进行识别、存储和处理的,所以如果在机器内部直接使用代表汉字编码的国际码来存储汉字,必然引起汉字字符和英文字符在信息识别和处理时的相互冲突。例如,汉字字符“菠”的国际码为(00100100 00110010)B,计算机无从识别这是一个国际码还是两个ASCII码。
为了使计算机有效地区分英文字符和中文字符,约定将国际码中每个字节的最高位设置为1;ASCII码的最高位设置为0。我们把这种经过约定后的国际码称为机内码。例如,汉字字符“菠”的机内码为(10100100 10110010)B 。
(3)汉字输入码。实现汉字输入时,系统所使用的字母或数字的组合称为汉字的输入码,也称汉字外码。如五笔输入法、搜狗智能输入法等。
汉字输入通常有键盘输入、语音输入、手写输入等方法,都有各自的优、缺点。常用的键盘输入方式将每个汉字用一个或几个英文键表示,这种表示方法称为汉字的输入码。输入码与机内码不同,它是专为解决汉字输入设计的,汉字输入后仍是以机内码存储在计算机中的,这种转换由系统中特殊的部分自动进行。输入码的基本元素是标准键盘上可见的字母符号。汉字输入码的种类有很多,根据输入码的方式大体可分为以下4类。
数字编码:如电报码、区位码等,特点是难于记忆、不易推广。
字音编码:如拼音码等,特点是简单易学,但重码多。
字形编码:如五笔宇型、表形码等,特点是重码少、输入快,但不易掌握。
音形编码:如自然码、快速码等,特点是规则简单、重码少,但不易掌握。
(4)汉字输出码。实现汉字输出(如显示或打印)时,系统自动将代表汉字序列的国际码转换成代表汉字形状的字型码。目前主流的汉字字型码有点阵字型码和矢量字型码。
① 点阵字型码。目前普遍使用点阵方式表示汉字字形,我们称为点阵字型码。用点阵方式存储汉字字型信息的集合,称为汉字字模库,简称汉字字库。
当点阵为16×16位时,点阵字型码采用32个字节进行编码,即一个汉字的字型码为32个字节,如图1-25所示。
图1-25 汉字“中”16×16位点阵字模示例
② 区位码。国标GB 2312-80规定,所有的国标汉字与符号组成一个94×94位的方阵,在此方阵中,每一行称为一个“区”(区号为01~94),每一列称为一个“位”(位号为01~94),该方阵实际上组成了一共94个区,每个区内有94个位的汉字字符集,每一个汉字或符号在码表中都有一个唯一的位置编码,称为该字符的区位码。
使用区位码方法输入汉字时,必须先在表中查找汉字并找出对应的代码才能输入。区位码输入汉字的优点是无重码,而且输入码与内部编码的转换比较方便。
3.Unicode码
世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想正确打开一个文本文件,就必须知道它正确的编码方式,否则用错误的编码方式解读就会出现乱码。可以想象,如果有一种编码,将世界上所有的符号都纳入其中,每一个符号都给予一个独一无二的编码,那么乱码问题就可以避免。
20世纪90年代,硬件及软件在内的多家主导厂商共同研制开发了Unicode编码。这种代码采用唯一16位来表示每一个符号。因此,Unicode由65 536个不同的位模式组成,这足以表示用中文、日文和希伯来文等语言书写的文档资料。
Unicode即统一码,又称万国码,是一种以满足跨语言、跨平台进行文本转换、处理的要求为目的设计的计算机字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码。
Unicode的编码方式与ISP 10646的通用字元集(也称通用字符集)概念相对应,使用16位的编码空间,也就是每个字符占用2个字节。实际上,目前版本的Unicode尚未填充满这16位编码,保留了大量空间作为特殊使用或将来扩展。
在Unicode中收录汉字个数达27 484个,包括简、繁体中文,以及日、韩文中使用到的几乎所有的汉字字符。Unicode的汉字编码在Windows系统中又称为CJK编码(中、日、韩统一编码)。
小 结
世界上第一台电子计算机ENIAC的诞生,标志着电子计算机时代的到来。在短短的几十年内,电子计算机经历了电子管、晶体管、集成电路和超大规模集成电路4个阶段的发展,使计算机的体积越来越小、功能越来越强、价格越来越低、应用越来越广泛,目前正朝着智能化计算机和神经网络计算机方向发展。
电子计算机具有自动连续运算、运算速度快、运算精度高、具有记忆能力和逻辑判断能力、通用性强的特点,被广泛应用于工业、农业、国防、科研、文教、交通运输、商业、通信以及日常生活等各个领域。
在计算机内部,一律采用二进制形式表示信息,除了二进制外,人们在编程中还经常使用十进制、八进制和十六进制。带符号数可以用原码、反码和补码等不同方法表示。
计算机中,除了数值信息外,还有非数值信息,如图形、图像、符号、字母、汉字等,这些信息需要通过编码,用若干位按一定规则组合而成的二进制码来表示。计算机中常用的编码有字符编码及汉字编码等。
习 题 1
一、单项选择题
1.1946年第一台电子数字计算机由( )研发。
A.哈佛大学 B.剑桥大学 C.牛津大学 D.宾夕法尼亚大学
2.半导体存储器是从第( )代计算机开始出现的。
A.一 B.二 C.三 D.四
3.电子计算机问世至今,不管机器如何推陈出新,依然采用程序存储的重要思想,最早提出这种思想的是( )。
A.摩尔 B.冯·诺依曼 C.图灵 D.香农
4.用计算机分析卫星云图,进行实时天气预报属于计算机应用中的( )。
A.科学计算 B.数据处理 C.实时控制 D.人工智能
5.使用计算机进行财务管理,属于计算机的( )应用领域
A.数值计算 B.人工智能 C.过程控制 D.信息处理
6.将十进制数75转换成二进制数是( )。
A.1101001 B.1011001 C.1100101 D.1001011
7.二进制数110011001对应的十六进制数是( )。
A.199 B.19C C.CC1 D.331
8.计算机内的数有浮点和定点两种表示方法。一个浮点法表示的数由两部分组成,即( )。
A.指数和基数 B.尾数和小数 C.尾数和阶码 D.整数和小数
9.对补码的叙述,( )不正确。
A.负数的补码是该数的反码最右加1 B.负数的补码是该数的原码最右加1
C.正数的补码就是该数的原码 D.正数的补码就是该数的反码
10.“A”的ASCII码值(十进制)为65,则“D”的ASCII码值(十进制)为( )。
A.70 B.68 C.62 D.69
11.在计算机中表示信息的最小单位是( )。
A.字 B.字节 C.位 D.双字节
12.存储器的1 KB存储容量表示( )。
A.1 024个二进制位 B.1 024个字节 C.1 024个字 D.1 000个字节
13.汉字信息在输出时,使用( )。
A.机内码 B.输入码 C.字形码 D.国标码
14.使用16×16点阵表示汉字字形时,存储100个汉字需要( )字节的存储容量。
A.28 800 B.12 800 C.3 200 D.7 200
15. 下列4种不同进制的数值中,最大的数是( )。
A.(7D)16 B.(174)8 C.(123)10 D.(1111000)2
二、填空题
1.人们依据采用的物理器件把计算机的发展分为4个阶段,分别是 、 、 和 。
2.1946年第一台电子数字计算机ENIAC,即 。
3.以微处理器为核心的微型计算机属于第 代计算机。
4.CAD的中文含义是 ,CAI的中文含义是 。
5.在二进制中,每一个数上可使用的码元个数为 。
6.二进制数1011+101等于 。
7.八进制数61.43转换成二进制数是 ,−19的补码表示为 。
8.八进制与十六进制之间的转换,一般以 作为桥梁。
9.仅根据数值位表示方法的不同,机器数有3种编码形式: 、 和 ,而采用 进行计算时,可以统一加减法。
10.7位二进制编码的ASCII码可表示的字符个数为 。
三、简答题
1.简述计算机的发展历史。
2.计算机的应用领域有哪些?
3.冯•诺依曼对计算机结构提出的重大改进理论是什么?
4.什么是机器数?对有符号数的表示方式有哪些?
5.以R进制为例,说明进位计数制的特点。
6.汉字编码有几种?各具有什么特点?
四、计算题
1.将十进制数256转换为二进制数、八进制数及十六进制数。
2.将十六进制数A16.4D转换为二进制数及八进制数。
3.分别用二进制反码和补码运算求−52−20。
4.求下列真值的原码、反码和补码。
+1010 −1010 +1111 −1111 −0000 −1000 +1011 −1011
5.试将下列十进制数转换为二进制数(小数点后保留3位)、八进制数及十六进制数。
(1)(28)D (2)(34.75)D (3)(8.256)D (4)(75.6)D
6.若X1=+1101,X2=−0011,用补码运算求X1+X2和X1−X2。