考研计算机组成原理总结(3)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 考研计算机组成原理总结(3)

一.错题回顾

长度相同但格式不同的两种浮点数,假设前者基数大,后者基数小,其他规定均相同,则他们可表示的数的范围和精度为( )

A. 两者可表示的数的范围和精度相同

B. 前者可表示的数的范围大但精度低

C. 后者可表示的数的范围大且精度高

D. 前者可表示的数的范围大且精度高

解析:B。基数越大,范围越大,但精度变低(数变稀疏)。

总结:范围与精度二者不能兼顾。


在规格化浮点运算中,若某浮点数为 25x1.10101, 其中尾数为补码表示,则该数( )

A. 不需规格化

B. 需右移规格化

C. 需将尾数左移一位规格化

D. 需将尾数左移两位规格化

解析:C。很明显该数是负数,当负数的尾数为补码表示,且为 1.0……形式时为规格化数,因此该尾数左移一位,阶码同时应减1,才为规格化数。


下列关于对阶操作说法正确的是( )

A. 在浮点加减运算的对阶操作中,若阶码减小,则尾数左移

B.在浮点加减运算的对阶操作中,若阶码增大,则尾数右移;若阶码减小,则尾数左移

C. 在浮点加减运算的对阶操作中,若阶码增大,则尾数右移

D.以上都不对

解析:C。对阶操作,是将较小的阶码调整到与较大的阶码一致,因此不存在阶码减小、尾数左移的情况。


下列说法中,正确的是( )

I. 在计算机中,表示的数有时会发生溢出,根本原因是计算机的字长有限

II. 8421 码就是二进制数

III. 一个正数的补码和这个数的原码表示一样, 而正数的反码是原码各位取反

IV. 设有两个正的规格化浮点数N1=2m * M1和N2=2n * M2,若m>n,则有N1>N2。

A. I、II

B. II、 III

C. I、III、IV

D. I、IV

解析:D。I正确;8421码是十进制数的二进制编码,II错误;正数的原码、反码和补码都相同,III错误;因为是规格化正浮点数,所以M1、M2均为 0.1……形式,有N1阶码至少比N2大1,所以N1>N2,IV

正确。


设浮点数共12位。其中阶码含1位阶符共4位,以2为底,补码表示;尾数含1位数符共8位,补码表示,规格化。则该浮点数所能表示的最大正数是( )

A.27

B. 28

C. 28- 1

D. 27-1

解析:D。为使浮点数取正数最大,可使尾数取正数最大,阶码取正数最大。尾数为8位补码(含符号位),正值最大为0.1111111即1-27, 阶码为4位补码(含符号位),正值最大为0111, 即7。则最大正数为(1-27)x27=27-1。

注意:可能有人认为尾数正值最大包含隐藏最高位1,为1.1111111即2-27。注意这里不是IEEE标准,只有在IEEE标准下才会有最高位隐藏1。


浮点数加、减运算过程一般包括对阶、尾数运算、规格化、舍入和判断溢出等步骤。设浮点数的价码和尾数均采用补码表示,且位数分别为5和7 (均含2位符号位)。若有两个数X =27 * 29/32 和 Y =25 * 5/8, 则用浮点加法计算X + Y的最终结果是( )

A. 00111 1100010

B. 00111 0100010

C. 01000 0010001

D. 发生溢出

解析:D。X的浮点数格式为00,111;00 ,1101 (分号前为阶码,分号后为尾数), Y的浮点数格式为00,101; 00,10100。然后根据浮点数的加法步骤进行运算。


对阶。X、Y阶码相减,即00,111-00,101=00, 111 + 11, 011= 00, 010, 可知X的阶码比Y的价码大2 (这一步可直接目测)。根据小阶向大阶看齐的原则,将Y的阶码加2,尾数右移2位,将Y变为00, 111; 00, 00101。


尾数相加。即00, 11101 + 00, 00101= 01, 00010, 尾数相加结果符号位为01,因此需要右规。


规格化。将尾数右移1位,阶码加1,得X+ Y为01,000;00,10001。


判断溢出。阶码符号位为01,说明发生溢出。


IEEE 754单精度浮点格式表示的数中,最小的规格化正数是( )

A.1.0x2 -126

B. 1.0x2-127

C.1.0x2-128

D.1.0x2 -149

解析:A。IEEE 754单精度浮点数的符号位、阶码位、尾数位(省去正数位1)所占的位数分别是1、8、23。最小正数,数符位取0,移码的取值范围是1~254, 取1,得阶码值1- 127= -126 (127为我们规定的偏置值),尾数取全0,最终推出最小规格化正数为A选项。


已知带符号整数用补码表示,float 型数据用IEEE 754标准表示,假定

变量x的类型只可能是 int 或float,当x的机器数为C800 0000H时,x的值可能是( )

A. -7 * 227

B. -216

C. 217

D. 25 * 227

解析:A。C800 0000H= 1100 1000 0000 0000 0000 0000 0000 0000。将其转换为对应的float型或int型。

1)若为float型,则尾数隐藏最高位1,数符为1表示负数,阶码1001 0000=27+24= 128+ 16,再减去偏置值127得到17,算出x值为-217。

2)若为int型, )则带符号补码,为负数,数值部分取反加1,得 011 1000 0000 0000 0000 0000 0000 0000算出x值为-7 * 227。


二.知识点梳理

1.认识浮点数

1.1浮点数的表示形式

通常,浮点数表示为 N=(-1)s * M * RE。式中,S取值0或1,用来决定浮点数的符号;M是一个二进制定点小数,称为尾数,一般用定点原码小数表示; E是一个二进制定点整数,称为阶码或指数,用移码表示。R是基数(隐含),可以约定为2、4、16等。可见浮点数面数符、尾数和阶码三部分组成。

例子:0e213400ff82fca72860f8493c1c7c85.jpg


其中,第0位为数符S;第1~7位为移码表示的阶码E (偏置值为64);第8~31位为24位二进制原码小数表示的尾数M;基数R为2。阶码的值反映浮点数的小数点的实际位置:阶码的位数反映浮点数的表示范围:尾数的位数反映浮点数的精度。


1.2 浮点数的表示范围

运算结果大于最大正数时称为正上溢,小于绝对值最大负数时称为负上溢,正上溢和负上溢统称上溢。数据一旦产生上溢,计算机必须中断运算操作,进行溢出处理。当运算结果在0至最小正数之间时称为正下溢,在0至绝对值最小负数之间时称为负下溢,正下溢和负下溢统称下溢。数据下溢时,浮点数值趋于零,计算机仅将其当作机器零处理。


1.3 浮点数的规格化

尾数的位数决定浮点数的有效数位,有效数位越多,数据的精度越高,为了在浮点数运算过程中尽可能多地保留有效数字的位数,使有效数字尽量占满尾数数位,必须在运算过程中对浮点数进行规格化操作。所谓规格化操作,是指通过调整一个非规格化浮 点数的尼数和阶码的大小,使非零的浮点数在尾数的最高数位上保证是一个有效值。

左规:当运算结果的尾数的最高数位不是有效位,即出现0.0……的形时,需要进行左规。左规时,尾数每左移一一位 (阶码减)(基数为2时).左规可能要进行多次。

右规:当运算结果的尾数的有效位进到不数点前面时,需要进行右规。将尾数右移一位、阶码加1(基数为2时)。需要右规时,只需进行一次。

原码表示的规格化尾数的形式如下:

1)正数为0.1……的形式,其最大值表示0.1111……最小值表示0.1000……. 。尾数的表示范围为1/2≤M≤(1-2n)。

2)负数为1.1……的形式,其最大值表示为1.1000……, 最小值表示为1.1111…… 。 尾数的表示范围为-(1- 2n)≤M≤-1/2。


    基数不同,浮点数的规格化形式也不同。当浮点数尾数的基数为2时,原码规格化数的尾数最高位一定是1。当基数为4时,原码规格化形式的尾数最高两位不全为0。

1.4 IEEE标准

8f73af7d1c720a295e519cfd3ad46580.jpg

IEEE 754标准中,规格化的短浮点数的真值为 (-1)s * 1.M * 2E-27

规格化长浮点数的真值为(-1)s * 1.M * 2E-1023

式中,短浮点数E的取值为1~254 (8位表示),M为23位,共32位:长浮点数E的取值为1~2046(11位表示),M为52位,共64位。


三.浮点数的加减运算

个人理解

对阶。先求阶差,将阶码小的右移直到两个数的阶码相等为止。

尾数求和。对阶后的尾数按定点数运算规则运算。

规格化。看情况左规和右归。

舍入。在对阶和尾数右移时进行。

溢出判断。以指数的溢出来判断,尾数溢出可以通过右归操作纠正。

例子

例:已知十进制数X=-5/256、 Y=+59/1024 ,按机器补码浮点运算规则计算X- Y ,结果用二进制表示,浮点数格式如下:阶符取2位,阶码取3位,数符取2位,尾数取9位。

解:


abb9e3b3a377f33f3c395b940a834d17.jpg

五.常见问题与易混淆知识点

1.定点、浮点表示的区别

(1) 数值的表示范围

若定点数和浮点数的字长相同,则浮点表示法所能表示的数值范围远大于定点表示法。

(2)精度对于字长相同的定点数和浮点数来说,浮点数虽然扩大了数的表示范围,但精度降低了

(3) 数的运算

浮点数包括阶码和尾数两部分,运算时不仅要做尾数的运算,还要做阶码的运算,而且运算结果要求规格化,所以浮点运算比定点运算复杂。

(4)溢出问题

在定点运算中,当运算结果超出数的表示范围时,发生溢出:浮点运算中,运算结果超出尾数表示范围却不一定溢出,只有规格化后阶码超出所能表示的范围时,才发生溢出。


2.如何判断一个浮点数是否是规格化数?

解:为了使浮点数能尽量多地表示有效位数,一般要 求运算结果用规格化数形式表示。规格化浮点数的尾数小数点后的第一位一 定是个非零数。 因此,对于原码编码的尾数来说,只要看尾数的第一位是否为1 就行:对于补码表示的尾数,只要看符号位和尾数最高位是否相反。需要注意的是,IEEE754标准的浮点数尾数是用原码编码的。


3.对于位数相同的定点数和浮点数,可表示的浮点数个数比定点数个数多吗?

解:不是,可表示的数据个数取决于编码所采用的位数。编码位数定, 编码出来的数据个数就是一定的。n位编码只能表示2n个数,所以对于相同位数的定点数和浮点数来说,可表示的数据个数应该一样多(有时可能由于一个值有两个或多个编码对应,编码个数会有少量差异)。


4.浮点数如何进行舍入?

舍入方法选择的原则是:

①尽量使误差范围对称,使得平均误差为0,即有舍有入,以防误差积累。

②方法要简单,以加快速度。IEEE 754有以下4种舍入方式:

①就近舍入:舍入为最近可表示的数,若结果值正好落在两个可表示数的中间,则般选择舍入结果为偶数。

②正向舍入:朝+∞方向舍入,即取右边的那个数。

③负向舍入:朝-∞方向舍入,即取左边的那个数。

④截去:朝0方向舍入,即取绝对值较小的那个数。


5.现代计算机中是否要考虑原码加减运算?如何实现?

因为现代计算机中学点数采用EE 754标准。所以在进行两个浮点数的加减运算时,必须考虑原码的加减运算,因为EEE 754规定浮点数的尾数都用原码表示。

原码的加减运算可以有以下两种实现方式:

1)转换为补码后,用补码加减法实现,结果再转换为原码。

2)直按用原码进行加成运算,符号和数值部分开进行(具体过程见原码加减运算部分)。


六.补充

可以与上一篇定点数运算形成对比:定点数运算


相关文章
|
10月前
|
存储 算法 调度
【考研必备】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(下)
【考研必备】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)
|
3月前
|
存储 知识图谱
【计算机组成原理】指令系统&考研真题详解之拓展操作码!
也就是说 “其中三地址指令29”条这句话,完全可以翻译成“三地址这种类型的指令一共能有29种不同的可能性” 这样说就清晰多 因为这就意味着 我们需要用若干个字节 来表示这29种不同的可能性 然后又已知每一个字节位能表示的可能性是2种(0/1),那么我们想有多少个字节可以表示29种不同的可能呢?最少5种 (因为2的4次方=16<29),2^5=32>29,也就是说有32-29=3种可能性是不在三地址指令这种类型的指令集里面的,所以这3 种余出来的可能性要被利用 就在下一种 “二地址指令集”中利用到
40 0
|
3月前
计算机网络——物理层相关习题(计算机专业考研全国统考历年真题)
计算机网络——物理层相关习题(计算机专业考研全国统考历年真题)
34 0
|
10月前
|
存储 安全 网络安全
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(下)
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)
|
10月前
|
存储 Unix Linux
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
【考研必备二】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
|
10月前
|
存储 机器学习/深度学习 Unix
【考研必备】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
【考研必备】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)
【考研必备】解开“黑匣子”的神秘面纱,透视数字世界底层实现过程(计算机组成原理)(上)
|
存储 编译器
考研计算机组成原理总结(8)
考研计算机组成原理总结(8)
166 0
|
存储 固态存储 程序员
考研计算机组成原理总结(5)
考研计算机组成原理总结(5)
619 0
|
存储 芯片 内存技术
考研计算机组成原理总结(4)
考研计算机组成原理总结(4)
355 0
考研计算机组成原理总结(4)

热门文章

最新文章