《计算机组成原理》习题答案 (秦磊华)
第三章 运算方法和运算器 习 题 三
3.1解释下列名词
变形形补码:即用两个二进制位来表示数据的符号位,其余与补码相同。 溢出:运算结果超出数据类型所能表示数据范围的现象称为溢出。
阵列乘法:采用类似手工乘法运算的方法,用大量与门产生手工乘法中的各乘积项,同时将大量一位全加器按照手工乘法算式中需要进行加运算的各相关项的排列方式组成加法器阵列。
恢复余数除法:比较被除数(余数)与除数的大小是用减法实现的。对原码除法而言,由于操作数以绝对值的形式参与运算,因此,相减结果为正(余数的符号位为0)说明够减,商上1;相减结果为负(余数的符号位为1)说明不够减,商上0。
由于除法通过减法实现,当商上1时,可将比较数据大小时的减法操作与除法操作中的减法操作合并,即商上1后继续后面的除法操作。商上0时表明不够减,但因比较操作时已经实施了一次减法,因此,需要对执行比较操作后的结果加上除数,既将余数还原成比较操作前的数值,这种方法就称为恢复余数法。
不恢复余数除法:又称加减交替法,是对恢复余数法的改进。不恢复余数法的特点是不够减时不再恢复余数,而根据余数的符号作相应处理就可继续往下运算,因此运算步数固定,控制简单,提高了运算速度。
阵列除法:类似于阵列乘法器的思想,为了加快除法的执行速度,也可以采用阵列除法器来实现除法。为简化运算及阵列除法器的结构,对参加运算的数据进行适当的处理,使其以正数的形式参加运算。
行波进位:多位进位之间存在高位进位的产生依赖低位进位的一种进位方式。 并行进位:高、低进位之间不存在具有依存关系,而是同时计算的进位方式。
算术移位:分为算术左移和算术右移。其中算数左移n位相当于乘上2n,执行方法是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补0,当符号位发生改变时表明发生了溢出。算术右移时,符号位保持不变,其余各位依次右移,最右边一位移出,将符号位拷贝到左边空出的位,一次移位相当于除2。
逻辑移位:逻辑左移n位的执行方法,是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补\。 逻辑右移n位的执行方法是把原来数中的每一位都向右移动n个位置,右面移出的低位丢弃不要,左面高位空出的位置上全部补0。
对阶:使阶码相等的过程,对阶的时一般采取小的阶码向大阶码看齐的方式。
规格化:就是使浮点数的运算结果中,将尾数从非规格化数变成规格化数的过程。根据尾数形式的不同,规格化可分为左移规格化和右移规格化。
3.2回答下列问题:
1)为什么采用并行进位能提高加法器的运算速度?
答:由于并行进位电路能很快产生各位的进位信号,使得加法器的速度大大提高。 2)如何判断浮点数运算结果是否发生溢出?
答:由于溢出与数据的表示范围有关,而浮点数的阶码影响到其数据表示的范围,因此,浮点数的溢出是通过接码的是否溢出为判断标志。对于采用双符号位的阶码而言,当双符号位不同时表示浮点数发生溢出,否则则未发生溢出。
3)如何判断浮点数运算结果是否为规格化数?如果不是规格化数,如何进行规格化?
答:当尾数采用补码表示时,若运算结果不是11.0××?×或00.1××?×的形式时,结果就不是规格化数。则应进行相应的规格化处理:
第 13 页 共 70 页
《计算机组成原理》习题答案 (秦磊华)
?当尾数符号为01或10时,需要向右规格化,且只需将尾数右移一位,同时将结果的阶码值加1。
?当尾数运算结果为11.1××?×或00.0××?×时需要左移规格化,而且左移次数不固定,与运算结果的形式有关。
左规的方法是尾数连同符号位一起左移位、和的阶码减1,直到尾数部分出现11.0或00.1的形式为止。
4)为什么阵列除法器中能用CAS的进位/借位控制端作为上商的控制信号?
答:阵列除法器利用不恢复余数的除法,当商上1的时候,会产生进位,当商上0时,不产生进位,进位信号与上商信号是相同的,所以可以用CAS的进位/借位控制作为上商的控制信号。
5)移位运算和乘法及除法运算有何关系? 答:移位运算是乘除法中的基本运算。
3.3 已知x和y,用变形补码计算x+y,并判断结果是否溢出。 (1) x=0.11010,y=0.101110 (2) x=0.11101,y=-0.10100
(3) x=-0.10111,y=-0.11000 解:(1)[x+y]补=01.100010,溢出。 (2)[x+y]补=00.01001,未溢出。 (3)[x+y]补=10.10001,溢出。
3.4 已知x和y,用变形补码计算x-y,并判断结果是否溢出。 (1) x=0.11011,y=0.11101 (2) x=0.10111,y=0.11110
(3) x=-0.11111,y=-0.11001 解:(1)[x-y]补=11.11110,未溢出。 (2)[x-y]补=11.11001,未溢出。 (1)[x-y]补=11.11001,未溢出。
3.5 设移码用6位表示(包含2位符号位),求[x ? y]移 (1)x = -6 , y = -3 (2)x=7 , y =11 (3)x=-3 , y =-12
解:(1)[x]移=001010,[y]移= 001101 [-y]移=110011 [Y]补= 111101 [-Y]补= 000011
[X]移 + [y]移=010111,
[X]移 + [Y]补= 001010+111101 =000111
根据移码加法公式[x + y]移=[X]移 + [Y]补= 000111
根据移码加法公式及溢出判断规则,双符号位为00,结果为负,未溢出。 根据移码的减法公式:
[x-y]移 = [x]移 + [-y]补
= 001010 + 000011 = 001101
根据移码溢出判断规则,双符号位为00,结果为负,未溢出。
第 14 页 共 70 页
《计算机组成原理》习题答案 (秦磊华)
(2)[x]移=110111, [y]补= 001011 [-y]补=110101
根据移码加法公式[x + y]移=[X]移 + [Y]补= 010111+ 001011 = 100010
(根据教材中说明的当以译码和补码两种数据表示进行运算时,要将移码第一符号位表示为0)
根据移码溢出判断规则,双符号位为10,结果为正,且发生溢出。
根据移码的减法公式:
[x-y]移 = [x]移 + [-y]补
= 010111+ 110101 = 001100
根据移码溢出判断规则,双符号位为00,结果为负,未溢出。
(3)略,请参照本题前两小题的思路和方法求解即可
3.6用原码一位乘法计算x×y=? (1) x=-0.11111,y=0.11101 (2) x=-0.11010,y=-0.01011
解:(1)
部分积 乘数(y) 判断位 说明 ↑
00.00000 yf.11101 P0=0 +00.11111 00.11111
→00.01111 1 yf.1110 右移一位,得P1
+00.00000 00.01111
→00.00111 11 yf.111 右移一位,得P2 +00.11111 01.00110
→00.10011 011 yf.11 右移一位,得P3 +00.11111 01.10010
→00.11001 0011 y.1 右移一位,得P4 +00.11111
01.11000
→00.11100 00011 yf 右移一位,得P5=|x|·|y|
由于 Pf=xf?yf=0?1=1 所以 x·y = ?0.1110000011
第 15 页 共 70 页
《计算机组成原理》习题答案 (秦磊华)
(2) 部分积 乘数(y) 判断位 说明 ↑
00.00000 yf. 01011 P0=0 +00.11010 00.11010
→00.01101 0 yf.0101 右移一位,得P1
+00.11010 01.00111
→00.10011 10 yf.010 右移一位,得P2 +00.00000 00.10011
→00.01001 110 yf.01 右移一位,得P3 +00.11010 01.00011
→00.10001 1110 y.0 右移一位,得P4 +00.00000
00.10001
→00.01000 11110 yf 右移一位,得P5=|x|·|y|
由于 Pf=xf?yf=1?1=0 所以 x·y = 0.0100011110
第 16 页 共 70 页