开发人员教程
第1章 计算机系统基础知识
1946年第一台计算机ENIAC(Electron Numerical Integrator and Calculator)问世以
一.计算机的发展
计算机的发展经历了5个重要的阶段。
1.大型机阶段
1946年美国研制的第一台计算机ENIAC,它采用电子管制作计算机的基本逻辑部件,体积大、耗电量大、寿命短、可靠性差、成本高,而且由于采用电子射线管作为计算机的存储部件,所以容量很小。
大型机(main{ra。me)的发展经历了以下几代:
·第一代,采用电子管制作的计算机;
·第二代,采用晶体管制作计算机;
·第三代,采用中、小规模集成电路制作计算机;
·第四代,采用大规模、超大规模集成电路制作计算机
2.小型机阶段
小型机(minicomputer)或称小型电脑
3.微型机阶段
微型机(microcomputer)又称微电脑,或个人电脑(personal computer,.PC)。
4.客户机/服务器阶段
早期的服务器主要是为客户机提供资源共享的磁盘服务器和文件服务器,而现在的服务器主要是数据库服务器和应用服务器等。
客户/服务器模式结构灵活、适用面广、成本较低,因此得到了广泛的应用。如果服务器的处理能力强,客户机的处理能力弱,则称为瘦客户机/胖服务器;否则称之为胖客户机/瘦服务器。
5.互联网阶段
二.计算机系统的基本结构
计算机系统是由硬件系统和软件系统组成的,计算机硬件是计算机系统中的物理装置,计算机软件是程序、数据和相关文档的集合。计算机系统的组成如下所示。
1.计算机系统的硬件组成
基本的计算机硬件系统由运算器、控制器、存储器、输入设备和输出设备五大部件组成,随着微电子技术的发展,运算器,控制器等部件已经被集成在一起,统称中央处理单元(central processing unit,CPU).CPU是硬件的核心,用于数据的加工处理,能完成各种算术,逻辑运算及控制功能.
运算器是对数据进行加工处理的部件,它主要完成算术和逻辑运算。控制器的主要功能则是从主存中取出指令并进行分析,控制计算机的各个部件有条不紊地完成指令的功能。
存储器是计算机系统中的记忆设备,分为内部存储器(main memory,简称内存或主
存)和外部存储器(简称外存)。内存速度高容量小,一般用来临时存放计算机运行时所需
的程序、数据及中间结果。外存容量大速度慢,可用于长期保存信息。寄存器是CPIJ中
的记忆设备,用来临时存放指令、数据及运算结构。与内存储器相比,寄存器的速度要快
得多
习惯上将CPIJ和主存储器的有机组合称为主机。输入输出(或I/O)设备位于主机之外,是计算机系统与外界交换信息的装置。所谓输入和输出都是相对于主机而言的。输入设备的作用是把信息转换成二进制形式输入到计算机的存储器中,输出设备的作用是把运算处理结果按照人们所要求的形式输出到外部存储介质上。
2.计算机硬件系统的典型结构
计算机硬件的各部分主要是采用总线结构连接起来的,基本的总线结构有单总线结
构、双总线结构等形式。
(1)单总线结构:单总线的计算机系统结构如图1-2所示。这种结构用一组系统总线将计算机系统的各部件连接起来,各部件之间通过总线交换信息。其优点是易于扩充新的I/O设备,缺点是同一时刻只能允许挂在总线上的·对设备之间互相传送信息,也就是分时使用总线,这就限制了信息传送的吞吐量。这种结构一般用在微型计算机和小型计算机中。
(2)双总线结构:为了消除信息传送的瓶颈,常设置多组总线,最常见的是在主存和CPIJ之间设置一组专用的高速存储总线,如图1—3所示。
以cpu为中心的双总线结构如图1-3(a)。在这种总线结构中,连接CPIJ和外围设备的系统总线称为输入输出(I/O)总线,I/O设备与主存之间的信息交换要经过CPIJ才能进行。其优点是控制线路简单,对I/O总线的传送速率要求较低,缺点是CPIJ的工作效率较低。以存储器为中心的双总线结构如图1—3(b)。在这种总线结构中主存储器可通过存储总线与CPIJ交换信息,同时还可以通过系统总线与I/O设备交换信息。这种结构的优点是信息传送速率高。
(3)采用通道方式的大型系统结构:在大中型计算机系统中,所连接的I/O设备数量较多,输入输出操作频繁,为便于扩充系统的功能和提高系统的效率,常采用通道结构,如图1-4
在通道结构中,一台主机可以连接多个通道,一个通道可以连接一台或多台I/O控制器,一台I/O控制器又可以连接一台或多台I/O设备,所以它具有良好的可扩展性。另外,由通道来管理和控制I/0设备,减轻了CPLJ的负担,提高了整个系统的效率。
3.计算机软件
软件是指为管理、运行、维护及应用计算机所开发的程序和相关文档的集合。软件系统是计算机系统中的重要组成部分,通常可将软件分为两大类:系统软件和应用软件,如下所示。
三.计算机中数据的表示及运算
1计算机中数据的表示
各种信息都必须经过数字化编码后才能被传送、存储和处理。所谓编码,就是采用少量的基本符号,选用一定的组合原则,以表示大量复杂多样的信息。基本符号的种类和这些符号的组合规则是一切信息编码的两大要素。
1.进位记数制及其转换
在采用进位记数的数字系统中,如果只用r个基本符号表示数值,则称其为r进制(radiX-r number system),r称为该数制的基数(radix)。对于不同的数制,它们的共同特点是:
·每一种数制都有固定的符号集。例如十进制数制的基本符号有10个(0,1,2,…9)。二进制数制的基本符号有0和1两个。
·每一种数制都使用位置表示法。即处于不同位置的数符所代表的值不同,与它所在位置的权值有关。
如十进制数1234.55可表示1234.55=1×103+2×102+3×101+4 X 100+5×10-1+5×10-2
可以看出,各种进位记数制中的权值就是基数的某次幂。因此,对任何一种进位记数制表示的数都可以写成按权展开的多项式之和,任意一个r进制数N可表示为:
其中的Di为该数制采用的基本数符,ri是权,r是基数。常用的几种进位数制
表1—1计算机中常用的进位数制的表示
进位制 |
二进制 |
八进制 |
十进制 |
十六进制 |
规则 |
逢二进一 |
逢八进一 |
逢十进一 |
逢十六进一 |
基数 |
r=2 |
r=8 |
R=10 |
R=16 |
数符 |
0,1 |
0,1,2,3…. |
… |
… |
权 |
2i |
8i |
10i |
16i |
表示符 |
B |
O |
D |
H |
2)二进制记数法
在二进制记数中,r=2,基本符号为0和1。二进制数中的一位称为1比特(b)。
二进制数转换成十进制数的方法:将二进制数的每一位数乘以它的权,然后相加
(100110.101)2=1 X 25+0 X 24+0×23+1×22+1×21+0×20+1×2-1+0×2-2+1×2-3
s=32+0+0+4+2+0+0.5+0+0.125=38.625
十进制数转换成二进制数时,整数部分和小数部分分别转换,然后再合并。十进制整数转换为二进制整数方法是“除2取余”;十进制小数转换为二进制小数的方法是“乘2取整”。
十进制数转二进制数简便方法:把一个十进制数写成按二进制数权的大小展开的多项式,按权值从高到低依次取各项的系数就可得到相应的二进制数。
【例1.2】把十进制数175.71875转换为相应的二进制数。
(175.71875)10=27+25+23+22+21+20+2-1+2-3+2-4+2-5=10101111.10111 2
3)八进制记数法
十进制数转换为八进制数的方法是:对于十进制整数采用“除8取余”的方法转换为八进制整数;对于十进制小数则采用“乘8取整”的方法转换为八进制小数。
二进制数转换成八进制数的方法是:从小数点起,把二进制数每3位分成一组,然后写出每一组的等值八进制数,顺序排列起来就得到所要求的八进制数。
同理,将一位八进制数用3位二进制数表示,就可以直接将八进制数转换成二进制数。
二进制与八进制数之间的对应关系如表1—2所示。
表1-2二进制、八进制和十六进制数之间的对应关系
二进制 |
八进制 |
二进制 |
十六进制 |
二进制 |
十六进制 |
000 |
0 |
0000 |
0 |
1000 |
8 |
001 |
1 |
0001 |
1 |
1001 |
9 |
010 |
2 |
0010 |
2 |
1010 |
A |
011 |
3 |
0011 |
3 |
1011 |
B |
100 |
4 |
0100 |
4 |
1100 |
C |
101 |
5 |
0101 |
5 |
1101 |
D |
110 |
6 |
0110 |
6 |
1110 |
E |
111 |
7 |
0111 |
7 |
1111 |
F |
【例1—3】把二进制数10101111.10111转换为相应的八进制数。
(10 101 111.101 11)2—257.568
4)十六进制记数法
十进制数转十六进制数的方法是:十进制数的整数部分“除十六取余”,十进制数的小数部分“乘十六取整”,进行转换。
由于一位十六进制数可以用4位二进制数来表示,因此二进制数与十六进制数的相互转换就比较容易。二进制数转换成十六进制数的方法是:从小数点开始,每4位二进制数为一组,将每一组用相应的十六进制数符来表示,即可得到正确的十六进制数。
二进制与十六进制数之间的对应关系如表1—2所示。
【例1-4】把二进制数10101111.10111转换为相应的十六进制数。
(1010 1111.1011 1)2=AF.B816
2.二进制运算规则
(1)加法:二进制加法的进位规则是“逢二进一”。
0+O=O 1+O=1 O+1=1 1+1=O(有进位)
(2)减法:在二进制减法的借位规则是“借一当二”。
O—O=0 1—0=1 1—1=O 0—1=1(有借位)
(3)乘法:二进制乘法规则是:
0×0=O 1 X O=O O×1=O 1×1=1
(4)除法:二进制除法是乘法的逆运算
【例1-5】以二进制数100111为被除数、110为除数,得到商110。1的过程如下:
3.机器数和码制
各种数据在计算机中表示的形式称为机器数,其特点是采用二进制计数制,小数点则隐含表示而不占位置。机器数对应的实际数值称为数的真值。
机器数有无符号数和带符号数之分。无符号数表示正数,在机器数中没有符号位。对于无符号数,若约定小数点的位置在机器数的最低位之后,则是纯整数;若约定小数点的位置在机器数的最高位之前,则是纯小数。对于带符号数,机器数的最高位是表示正、负的符号位,其余位则表示数值。若约定小数点的位置在机器数的最低数值位之后,则是纯整数;若约定小数点的位置在机器数的最高数值位之前(符号位之后),则是纯小数。
为了便于运算,带符号的机器数可采用原码、反码和补码等不同的编码方法,机器数的这些编码方法称为码制。
1)原码表示法
数值X的原码记为[X]原。设机器字长为n(即采用行个二进制位表示数据),则最高位是符号位,0表示正号,1表示负号;其余的n—I位表示数值的绝对值。数值零的原码
表示有两种形式:[+0]原一0 0000000,[一0]原一10000000。
【例1—6】若机器字长n等于8,则:
[+1]原=0 0000001 [一1]原=10000001
[+127]原=01111111[一127]原=11111111
[+45]原=0 0101101 [一45]原=10101101
[+0.5]原=0◇1000000,[-0.5]原=1◇1000000,其中◇是小数点的位置。
2)反码表示法
数值X的反码记作[X]反。设机器字长为n,则最高位是符号位,0表示正号,l表示负号,正数的反码与原码相同,负数的反码则是其绝对值按位求反。数值零的反码表示有两种形式:[+O]反一o 0000000,[一O]反一11111111。
【例1—7】若机器字长n等于8,则:
[+1]反=0 0000001 [一1]反=一11111110
[+127]反=01111111 [一127]反=10000000
[+45]反=0 0101101 [一45]反=11010010
[+0.5]反=0◇1000000,[-0.5]反=100111111,其中◇是小数点的位置。
3)补码表示法
数值x的补码记作[X]补。设机器字长为n,则最高位为符号位,0表示正号,1表示负号,正数的补码与其原码和反码相同,负数的补码则等于其反码的末尾加l。在补码表示中,0有惟一的编码:[+0]补=O 0000000,[-0]补=00000000。
【例1-8】若机器字长n等于8,则:
[+1] 补=0 0000001 [一1]补=11111111
[+127]补=01111111 [一127]补=10000001
[+45]补=00101101 [一45]补=11010011
[+0.5]补=0◇1000000,[-o.5]补=1◇1000000,其中◇是小数点的位置
4.定点数和浮点数
1)定点数
定点数是小数点的位置固定不变的数。小数点的位置两种约定方式:定点整数(纯整数)和定点小数(纯小数)。
设机器字长为n,各种码制表示下的带符号数的范围如表1-3所示。
2)浮点数
当机器字长为n时,定点数的补码和移码可表示2一’个数,而其原码和反码只能表示
2一’一1个数(O的表示占用了两个编码),因此,定点数所能表示的数值范围比较小,运算
中很容易因结果超出范围而溢出。因此引入浮点数,浮点数是小数点位置不固定的数,它
能表示更大范围的数。
在十进制中,一个数可以写成多种表示形式。例如,83.125可写成10。×O.083125
或10。×0.0083125等。同样,一个二进制数,也可以写成多种表示形式。例如,二进制数
1011.10101可以写成2‘×O.10110101、2。×O.0101110101或2。×O。00101110101,等等。
由此可知,一个二进制数N可以表示为更一般的形式:
N一2。×F
其中E称为阶码,F叫做尾数。用阶码和尾数表示的数叫做浮点数,这种表示数的方法
称为浮点表示法。
在浮点表示法中,阶码通常为带符号的纯整数,尾数为带符号的纯小数。浮点数的表
示格式如下:
很明显,一个数的浮点表示不是惟一的。当小数点的位置改变时,阶码也随着相应改变,
因此可以用多种浮点形式表示同一个数。
浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。为
了充分利用尾数来表示更多的有效数字,通常采用规格化浮点数。规格化就是将尾数的