计算机组成与系统结构复习第2章.docx

上传人:b****2 文档编号:1939284 上传时间:2023-05-02 格式:DOCX 页数:60 大小:48.42KB
下载 相关 举报
计算机组成与系统结构复习第2章.docx_第1页
第1页 / 共60页
计算机组成与系统结构复习第2章.docx_第2页
第2页 / 共60页
计算机组成与系统结构复习第2章.docx_第3页
第3页 / 共60页
计算机组成与系统结构复习第2章.docx_第4页
第4页 / 共60页
计算机组成与系统结构复习第2章.docx_第5页
第5页 / 共60页
计算机组成与系统结构复习第2章.docx_第6页
第6页 / 共60页
计算机组成与系统结构复习第2章.docx_第7页
第7页 / 共60页
计算机组成与系统结构复习第2章.docx_第8页
第8页 / 共60页
计算机组成与系统结构复习第2章.docx_第9页
第9页 / 共60页
计算机组成与系统结构复习第2章.docx_第10页
第10页 / 共60页
计算机组成与系统结构复习第2章.docx_第11页
第11页 / 共60页
计算机组成与系统结构复习第2章.docx_第12页
第12页 / 共60页
计算机组成与系统结构复习第2章.docx_第13页
第13页 / 共60页
计算机组成与系统结构复习第2章.docx_第14页
第14页 / 共60页
计算机组成与系统结构复习第2章.docx_第15页
第15页 / 共60页
计算机组成与系统结构复习第2章.docx_第16页
第16页 / 共60页
计算机组成与系统结构复习第2章.docx_第17页
第17页 / 共60页
计算机组成与系统结构复习第2章.docx_第18页
第18页 / 共60页
计算机组成与系统结构复习第2章.docx_第19页
第19页 / 共60页
计算机组成与系统结构复习第2章.docx_第20页
第20页 / 共60页
亲,该文档总共60页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机组成与系统结构复习第2章.docx

《计算机组成与系统结构复习第2章.docx》由会员分享,可在线阅读,更多相关《计算机组成与系统结构复习第2章.docx(60页珍藏版)》请在冰点文库上搜索。

计算机组成与系统结构复习第2章.docx

计算机组成与系统结构复习第2章

计算机组成与系统结构

上海交通大学继续教育学院

陈泽宇博士副教授

第1章计算机系统概论

第2章运算方法和运算器

第3章存储系统

第4章指令系统

第5章中央处理器(CPU)

第6章总线系统

第7章输入输出(I/O)系统

第8章并行计算机系统

第2章运算方法和运算器

2.1数据信息的表示

2.2定点运算和定点运算器

2.3浮点运算和浮点运算器

2.1数据信息的表示

2.1.1数值数据的表示

2.1.2非数值数据的表示

2.1.3数据信息的校验

数据有两大类

数值数据,有“量”的概念

非数值数据

数据在计算机中用二进制数码表示

信息的数字化编码

用“0”和“1”按照一定的组合规则来表示数据、文字、声音、图像、视频等复杂信息

2.1.1数值数据的表示

1.进位计数制

2.各种进制数之间的转换

3.数的机器码表示

4.定点数的表示

5.浮点数的表示

6.十进制数串的表示方法

在计算机系统中,

通常将十进制数作为人机交互的媒介,

而数据则以二进制数的形式存储和运算

计算机采用二进制的原因

易于物理实现

具有两种稳定状态的物理器件很多(如门电路的导通/截止、电压的高/低),恰好可以对应表示“1”和“0”

采用十进制,就要制造具有10种稳定状态的物理电路,非常困难

运算规则简单

数学推导已经证明,对R进制数进行算术求和或求积运算,其运算规则各有R(R+1)/2种

采用十进制(R=10),就有55种求和或求积的运算规则

采用二进制(R=2),仅有3种求和或求积的运算规则,可以大大简化运算器等物理器件的设计

机器可靠性高

电压高/低、电流有/无都是质的变化,两种物理状态稳定、分明

因此二进制码传输的抗干扰能力强,鉴别信息的可靠性高

逻辑判断方便

二进制的“1”和“0”正好与逻辑命题的“真”和“假”相对应,能够方便地使用逻辑代数工具来分析和设计计算机的逻辑电路

但是,用二进制表示一个数所使用的位数比十进制长得多

通常使用十六进制来弥补二进制的这一不足

1.进位计数制

1)十进制

2)二进制

3)十六进制

进位计数制

采用从低位向高位进位的方式进行计数的数据表示方法

讨论进位计数制要涉及两个基本概念

基数(Radix)

每个数位所用到的数码符号的个数

权(Weight)

数码在不同的数位上所表示的数值是不同的

每个数码所表示的数值等于该数码本身乘以一个与它所在数位有关的常数,这个常数叫做权

1)十进制

基数为10,逢10进1

一个数的数值大小就是它的各位数码按权相加之和

(6543.21)10=6×103+5×102+4×101+3×100+2×10-1+1×10-2

任何一个十进制数都可以用一个多项式来表示:

式中:

Ki的取值是0~9中的一个数码;m和n为正整数

推而广之,一个基数为R的R进制数可表示为

式中:

Ri是第i位的权;Ki取值可以是0,1,…,R-1共R个数码中的任意一个

进位原则:

逢R进1

2)二进制

二进制只有两个不同的数码“0”和“1”

基数为2,逢2进1

任意数位的权是2i

任何一个二进制数都可表示为

3)十六进制

基数为16,逢16进1

每个数位可取0,1,…,9,A,B,…,F共16个不同的数码和符号中的任意一个

其中A~F分别表示十进制数值10~15

任何一个十六进制数可表示为

不同进制的表示

用下标表示

(1010)2、(1010)10、(1010)16

用后缀字母表示

B:

二进制(Binary)数

H:

十六进制(Hexadecimal)数

D:

十进制(Decimal)数,可省略

375D、101B、AFEH

三种常用进位计数制的对应关系

十进制

二进制

十六进制

十进制

二进制

十六进制

0

0000

0

8

1000

8

1

0001

1

9

1001

9

2

0010

2

10

1010

A

3

0011

3

11

1011

B

4

0100

4

12

1100

C

5

0101

5

13

1101

D

6

0110

6

14

1110

E

7

0111

7

15

1111

F

2.各种进制数之间的转换

1)二进制数转换为十六进制数

2)十六进制数转换为二进制数

3)二进制数转换为十进制数

4)十进制数转换为二进制数

1)二进制数转换为十六进制数

整数部分和小数部分分别转换

以小数点为界,

整数部分:

从小数点开始往左数,每4位分成一组(可在最左边添“0”)

小数部分:

从小数点开始往右数,每4位分成一组(可在最右边添“0”)

最终使二进制数的总的位数是4的倍数

然后用相应的十六进制数取而代之

111011.1010011011B=00111011.101001101100B

=3B.A6CH

2)十六进制数转换为二进制数

将1位十六进制数写成4位二进制数,去除整数最左边和小数最右边的“0”

3B.328H

=00111011.001100101000B

=111011.001100101B

3)二进制数转换为十进制数

按权展开相加法

把各位数码与它们的权相乘,再把乘积相加,就得到对应的十进制数

100011.1011B

=1×25+1×21+1×20+1×2-1+1×2-3+1×2-4

=35.6875D

4)十进制数转换为二进制数

基数乘除法

对整数和小数部分分别处理

整数部分用除基取余法

小数部分用乘基取整法

最后将它们拼接起来即可

⑴十进制整数转换为二进制整数

(除基取余法)

除以基数

(2)取余数,先得到的余数为低位,后得到的余数为高位

用2连续去除十进制整数,直到商等于0为止

然后按逆序排列每次的余数(先取得的余数为低位)

例如,将175D转换成二进制数:

所以,175D=10101111B

⑵十进制小数转换为二进制小数

(乘基取整法)

乘以基数

(2)取整数,先得到的整数为高位,后得到的整数为低位

用2连续去乘十进制数的小数部分,直至乘积的小数部分等于0为止

然后按顺序排列每次乘积的整数部分(先取得的整数为高位)

例如,将0.3125D转换成二进制数:

所以,0.3125D=0.0101B

若要将十进制数175.3125转换成二进制数,应对整数部分和小数部分分别进行转换,然后再进行整合:

175.3125D=10101111.0101B

注意:

十进制小数常常不能准确地换算为等值的二进制小数,存在有一定的换算误差

根据精度要求,截取一定的数位,其误差值小于截取的最低一位数的权

当要求二进制数取m位小数时,一般可求m+1位,然后对最低位作0舍1入处理

3.数的机器码表示

1)机器数和真值

2)原码

3)补码

4)反码

5)移码

1)机器数和真值

符号位

把正负符号用1位二进制数码来表示

机器数(或称机器码)

把符号位和数值位一起编码来表示的数

“0”表示正号,“1”表示负号,符号位置于最高数值位之前

表示形式包括原码、补码、反码、移码

真值

用“+”、“-”来表示符号的数

例如:

N1=+0.101101,N2=-0.101101,这是真值,

表示成机器数(以原码为例)就是[N1]原=0.101101,[N2]原=1.101101

2)原码

符号位为0表示正数,为1表示负数,数值部分用二进制数的绝对值表示

假设机器数的位数8位(即机器的字长为8位),最高位是符号位,其余7位是数值位,那么,+59和-59的原码分别表示为

[+59]原=00111011[-59]原=10111011

字长为n的整数原码的定义式

注意:

0的原码有“正零”和“负零”之分,机器遇到这两种情况都当作0处理

[+0]原=00000000[-0]原=10000000

原码的表示方法简单易懂,与真值转换方便,但在进行加减法运算时,符号位不能直接参加运算,而是要分别计算符号位和数值位

为了解决这些问题,人们引进了数的补码表示法

3)补码

日常生活中的实例

假如现在时间是7点,而你的手表却指向了9点,如何调整手表的时间?

有两种方法拨动时针

一种是顺时针拨,即向前拨动10个小时

另一种是逆时针拨,即向后拨2个小时

从数学的角度可以表示为:

(9+10)-12=19-12=7或9-2=7

对钟表来说,向前拨10个小时和向后拨2个小时的结果是一样的,减2可以用加10来代替

这是因为钟表是按12进位的,12就是它的“模”

对模12来说,-2与+10是“同余”的

也就是说,-2与+10对于模12来说是互为补数的

计算机中的加法器是以2n为模的有模器件,因此可以引入补码,把减法运算转换为加法运算,以简化运算器的设计

补码的定义

把某数X加上模数K,称为以K为模的X的补码

[X]补=K+X

正数的补码的最高位为符号“0”,数值部分为该数本身

负数的补码的最高位为符号“1”,数值部分为用模减去该数的绝对值

【例2-1】若X=+0111011,Y=-0111011,求[X]补、[Y]补。

【解】

[X]补=00111011

[Y]补=100000000-0111011

=11000101(mod28)

通过用模2n减去某数的绝对值的方法来求某数的补码比较麻烦,求一个二进制数的补码的简便方法是

正数的补码与其原码相同

负数的补码是符号位不变,数值位逐位取反(即求其反码),然后在最低位加1

例如,[+59]补=[+59]原=00111011,而[-59]原=10111011,

因此,[-59]补=11000100+1=11000101

字长为n的整数补码的定义式

注意:

0的补码只有一种形式,就是n位0

采用补码表示法进行加减法运算,比原码运算方便多了

符号位可以和数值位一起参加运算

不论数是正还是负,计算机总是做加法,减法运算可转换为加法运算

4)反码

引入反码的目的是便于求负数的补码

正数的反码与原码相同,负数的反码是符号位不变,数值位逐位取反

例如:

[+59]反=[+59]原=00111011,而[-59]原=10111011,

因此,[-59]反=11000100。

字长为n的整数反码的定义式

注意:

0的反码也有两个,[+0]反=00000000,[-0]反=11111111

在计算机中,求一个数的反码很容易,因此,求一个数的补码也就易于实现

采用补码运算,计算机的控制线路较为简单

所以,目前大多数计算机均采用补码存储、补码运算,其运算结果仍为补码形式

综上所述,

在n位机中,用n位二进制数补码表示一个带符号的整数时,最高位为符号位,后面n-1位为数值部分

n位二进制数补码表示的范围为-2n-1~+2n-1-1

例如,在8位机中,补码表示的范围为-128~+127

8位二进制数的各种表示方法

二进制数码

真值

无符号数

原码

反码

补码

00000000

0

+0

+0

+0

00000001

1

+1

+1

+1

00000010

2

+2

+2

+2

01111101

125

+125

+125

+125

01111110

126

+126

+126

+126

01111111

127

+127

+127

+127

10000000

128

-0

-127

-128

10000001

129

-1

-126

-127

10000010

130

-2

-125

-126

11111101

253

-125

-2

-3

11111110

254

-126

-1

-2

11111111

255

-127

-0

-1

【例2-2】以整数为例,用数轴形式说明原码、反码、补码的表示范围和可能的数码组合情况。

【解】表示范围:

原码-(2n-1-1)~2n-1-1,反码-(2n-1-1)~2n-1-1,补码-2n-1~2n-1-1

在补码表示中“0”只有一种形式,且用补码表示负数时范围可到-2n-1

【例2-3】在字长为8位的计算机中,下列数的原码、反码及补码各为多少?

+18,-18,+31,-31,+127,-127

【解】字长为8位的计算机所能表示的机器数是8位,最高位为符号位,后面7位为数值位。

因此:

[+18]原=[+18]反=[+18]补=00010010

[-18]原=10010010[-18]反=11101101[-18]补=11l01110

[+31]原=[+31]反=[+31]补=000111111

[-31]原=10011111[-31]反=11100000[-31]补=11100001

[+127]原=[+127]反=[+127]补=011111111

[-127]原=11111111[-127]反=10000000[-127]补=10000001

5)移码

移码也称为增码或偏码,常用于表示浮点数中的阶码

对于字长为n的计算机,若最高位为符号位,数值位为n-1位,当偏移量取2n-1时,则其真值X所对应的移码的定义式

[X]移=2n-1+X(-2n-1≤X<2n-1)

将移码定义与整数补码的定义相比较,可以得到移码和补码之间的关系

当0≤X<2n-1时,

[X]移=2n-1+X=2n-1+[X]补

当-2n-1≤X<0时,

[X]移=2n-1+X=(2n+X)-2n-1=[X]补-2n-1

可见,移码可由补码求得,只要把补码的符号位取反就得到了移码

【例2-4】X=+101101,Y=-101101,求[X]移和[Y]移。

【解】[X]补=0101101,所以[X]移=1101101

[Y]补=1010011,所以[Y]移=0010011

【例2-5】将十进制真值X(-127,-1,0,+1,+127)列表表示成二进制数及原码、反码、补码、移码值。

【解】

其中,0在[X]原,[X]反中有两种表示形式。

真值X(十进制)

真值X(二进制)

[X]原

[X]反

[X]补

[X]移

-127

-01111111

11111111

10000000

10000001

00000001

-1

-00000001

10000001

11111110

11111111

01111111

0

00000000

10000000

11111111

00000000

10000000

00000000

00000000

+1

+00000001

00000001

00000001

00000001

10000001

+127

+01111111

01111111

01111111

01111111

11111111

4.定点数的表示

计算机中常用的数据表示格式有两种:

定点和浮点

定点数:

一个数中小数点的位置是固定的

浮点数:

一个数中小数点的位置是浮动的

定点格式可表示的数值的范围有限,但要求的处理硬件简单

浮点格式可表示的数值的范围很大,但要求的处理硬件复杂

定点格式

约定机器中所有数据的小数点位置是固定不变的

通常将定点数据表示成纯小数或纯整数

为了将数表示成纯小数,通常把小数点固定在数值部分的最高位之前

为了把数表示成纯整数,则把小数点固定在数值部分的最后面

图中所标示的小数点“.”,在机器中是不表示出来的,而是事先约定在固定的位置

假设用一个n位字来表示一个定点数x=x0x1x2…xn-1

符号位x0通常放在最左位置,并用数值0和1分别代表正号和负号

如果x表示的是纯小数,那么小数点位于x0和x1之间,数的表示范围为:

0≤|x|≤1-2-(n-1)

如果x表示的是纯整数,则小数点位于最低位xn-1的右边,数的表示范围为:

0≤|x|≤2n-1-1

目前计算机中大多采用定点纯整数表示,因此将定点数表示的运算简称为整数运算

5.浮点数的表示

1)规格化浮点数

2)IEEE-754标准浮点格式

定点数难以表示数值很大和数值很小的数据

例如

电子的质量(9×10-28克)

太阳的质量(2×1033克)

为了表示更大范围的数据,数学上通常采用科学计数法

把数据表示成一个小数乘以一个以10为底的指数

电子的质量和太阳的质量可以分别取不同的比例因子,以使其数值部分的绝对值小于1,即:

9×10-28=0.9×10-27

2×1033=0.2×1034

浮点表示法

把一个数的有效数字(精度)和数的范围在计算机中分别表示

相当于数的小数点位置随比例因子的不同而在一定范围内自由浮动

改变指数部分的数值相当于改变小数点的位置

浮点数的一般表示形式

十进制数:

N=10e×M

二进制数:

N=2e×M

其中,

M称为浮点数的尾数,是一个纯小数

e是比例因子的指数,称为浮点数的指数,是一个整数,常称为阶码

尾数部分给出有效数字的位数,因而决定了浮点数的表示精度

阶码部分指明了小数点在数据中的位置,因而决定了浮点数的表示范围

浮点数是有符号数

其中,

S为尾数的符号位,放在最高一位

E为阶码,紧跟在符号位之后,占m位

M为尾数,放在低位部分,占n位

1)规格化浮点数

若不对浮点数的表示做出明确规定,同一个浮点数的表示就不是惟一的

例如:

(1.75)10=(1.11)2=1.11×20

=0.111×21

=0.0111×22

=0.00111×23

浮点数的规格化

为了提高数据的表示精度,需要充分利用尾数的有效位数

当尾数的值不为0时,尾数域的最高有效位应为1

否则就要用修改阶码同时左右移动小数点的办法,使其变成符合这一要求的表示形式

2)IEEE-754标准浮点格式

在IEEE-754标准出现之前,业界并没有一个统一的浮点数标准

很多计算机制造商都在设计自己的浮点数规则以及运算细节,不便于软件的移植

1985年,IEEE(InstituteofElectricalandElectronicsEngineers,美国电气和电子工程师协会)提出了IEEE-754标准,并以此作为浮点数表示格式的统一标准

目前,几乎所有的计算机都支持该标准,从而大大改善了科学应用程序的可移植性

IEEE标准从逻辑上采用一个三元组{S,E,M}来表示一个数N,规定

基数为2

符号位S用0和1分别表示正和负

尾数M用原码表示

阶码E用移码表示

根据浮点数的规格化方法,尾数域的最高有效位总是1

由此,该标准约定这一位不予存储,而是认为隐藏在小数点的左边

因此,尾数域所表示的值是1.M(实际存储的是M)

这样可使尾数的表示范围比实际存储多一位

为了表示指数的正负,

阶码E通常采用移码方式来表示,将数据的指数e加上一个固定的偏移量后作为该数的阶码

这样做既可避免出现正负指数,又可保持数据的原有大小顺序,便于进行比较操作

IEEE-754标准规定,

单精度格式(32位)

符号位(S)1位

阶码(E)8位,阶码的偏移量为127(7FH)

尾数(M)23位,用小数表示,小数点放在尾数域的最前面

双精度格式(64位)

符号位(S)1位

阶码(E)11位,阶码的偏移量为1023(3FFH)

尾数(M)52位,用小数表示,小数点放在尾数域的最前面

浮点数的真值表示

规格化的32位浮点数

X=(-1)s×(1.M)×2E-127e=E-127

规格化的64位浮点数

X=(-1)s×(1.M)×2E-1023e=E-1023

机器零

当一个浮点数的尾数为0,不论其阶码为何值,

或者当阶码的值遇到比它所能表示的最小值还小时,不管其尾数为何值,

计算机都把该浮点数看成零值,称为机器零

为什么指数的偏移量不选128?

当阶码E为全0且尾数M也为全0时,表示的真值X为零,结合符号位S为0或1,有正零和负零之分

当阶码E为全1且尾数M也为全0时,表示的真值X为无穷大(∞),结合符号位S为0或1,有+∞和-∞之分

这样,在32位浮点数表示中,要除去E用全0和全1(255)表示零和无穷大的特殊情况,因此,阶码E的取值范围变为1~254,指数的偏移量不选128(10000000B),而选127(01111111B)

对于32位规格化浮点数,真正的指数值e为-126~+127

因此,数的绝对值的范围是2-126~2127≈10-38~1038

【例2-6】若浮点数X的IEEE-754标准格式为42E48000H,求其十进制数值表示。

【解】

①将十六进制数42E48000H转换为二进制数:

②IEEE-754标准使用1位符号位,8位阶码,23位尾数,因此可以分别提取这些内容:

符号位S=0,表示正数

阶码E=10000101B=133D,则实际的指数e=E-127=133-127=6D

尾数M=11001001000000000000000B=11001001B,则包括隐含位1的尾数1.M=1.11001001B

③根据公式写出实际数值大小:

X=(-1)S×(1.M)×2e=+(1.11001001)×26=1110010.01B=114.25D

【例2-7】将十进制数100.25转换成IEEE-754标准的32位浮点数的十六进制表示。

【解】

①将十进制数转换为二进制数:

100.25D=1100100.01B

②规格化二进制数(移动小数点,使其在第1、2位之间):

1100100.01B=1.10010001×26e=6,1.M=1.10010001B

③计算出阶码(e+偏移量):

E=e+127=133D=10000101B

④以32位浮点数格式来表示该数:

因为:

S=0,E=10000101B,M=10010001000000000000000B

所以,32位浮点数的二进制格式和十六进制格式为:

6.十进制数串的表示方法

1)字符串形式

2)压缩的十进制数串形式

1)字符串形式

一个字节存放一个十进制的数位或符号位

一个十进制数占用连续的多个字节

为了明确表示一个字符串,需要给出该数在主存中的起始地址和位数(串的长度)

主要用在非数值计算的应用领域中

2)压缩的十进制数串形式

一个字节存放两个十进制的数位

节省存储空间,便于直接完成十进制数的算术运算

一个数连续占用主存的多个字节

每个数位占用4个二进制位,其值可用数字的ASCII码值的低4位表示

符号位也占半个字节

要指明一个压缩的十进制数串,必须给出它在主存中的首地址和数字位个数(又称位长,不含符号位)

位长为0的数其值为0

优点

位长可变,许多机器中规定该长度从0到3

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2