完美WORD格式
(5) [
11x+y]补 (6) [-x]补+[2y]补 22解:[x]补=00110001 [y]补=10110110 [-y]补=01001010
(1) [x]补+[y]补=00110001+10110110=11100111 (2) [x]补-[y]补=00110001+01001010=01111011 (3) [-x]补+[(4) [2x-
1y]补=11001111+11011011=10101010 21y]补=01100010+00100101=10000111 溢出 211(5) [x+y]补=00011000+11011011=11110011
22(6) [-x]补+[2y]补 [2y]补溢出,故[-x]补+[2y]补的结果溢出
3.4 分别用原码一位乘法和补码一位乘法计算[x×y]原和[x×y]补。
(1) x=0.11001 y=0.10001 (2) x=0.01101 y=-0.10100 (3) x=-0.10111 y=0.11011 (4) x=-0.01011 y=-0.11010 解:(1)[x×y]原=0.0110101001 [x×y]补=0.0110101001
(2)[x×y]原=1.0100000100 [x×y]补=1.1011111100 (3)[x×y]原=1.1001101101 [x×y]补=1.0110010011 (4)[x×y]原=0.0100011110 [x×y]补=0.0100011110
3.5 分别用原码两位乘法和补码两位乘法计算[x×y]原和[x×y]补。
(1) x=0.11001 y=0.10001 (2) x=0.10101 y=-0.01101 (3) x=-0.01111 y=0.11101 (4) x=-0.01001 y=-0.10010 解: (1) [x×y]原=0.0110101001 [x×y]补=0.0110101001
(2)[x×y]原=1.0100010001 [x×y]补=1.1011101111 (3)[x×y]原=1.0110110011 [x×y]补=1.1001001101 (4)[x×y]原=0.0010100010 [x×y]补=0.0010100010
3.6 分别用原码不恢复余数法和补码不恢复余数法计算[x/y]原和[x/y]补。(1) (4)
(1) x=0.01011 y=0.10110
[x/y]原=0.10000 [x/y]补=0.10000 or [x/y]补=0.10001 (2) x=0.10011 y=-0.11101
[x/y]原=1.10100 [x/y]补=1.01100 or [x/y]补=1.01011 (3) x=-0.10111 y=-0.11011
[x/y]原=0.11100 [x/y]补=0.11101 or [x/y]补=0.11100 (4) x=+10110 y=-00110
[x/y]原=100011 [x/y]补=111101
3.7 在进行浮点加减运算时,为什么要进行对阶?说明对阶的方法和理由。 答:
3.8 已知某模型机的浮点数据表示格式如下:
0 数符 1 阶符 2 7 阶码 8 15 尾数
其中,浮点数尾数和阶码的基值均为2,均采用补码表示。
整理分享
完美WORD格式
(1) 求该机所能表示的规格化最小正数和非规格化最小负数的机器数表示及其所对应的十进制真值。 (2)已知两个浮点数的机器数表示为EF80H和FFFFH,求它们所对应的十进制真值。 (3)已知浮点数的机器数表示为:
[x]补=1 1111001 00100101,[y]补=1 1110111 00110100
试按浮点加减运算算法计算[x±y]补。 3.9 已知某机浮点数表示格式如下:
0 1 数符 阶符 2 5 阶 码 6 11 尾 数
其中,浮点数尾数和阶码的基值均为2,阶码用移码表示,尾数用补码表示。设:
-001+001
x=0.110101×2 y=-0.100101×2 试用浮点运算规则计算x+y、x-y、x×y、x/y。(要求写出详细运算步骤,并进行规格化)。 解:机器数 [x]补=0 01111 110101 [y]补=1 10001 011011 [-y]补=0 10001 100101
0
(1)x+y 机器数 [x+y]补=1 10000 010000 x+y=-0.110000×2
对阶: [Δe]移=[ex]移+[-ey]补=01111+11111=01110,Δe=ex-ey=-00010 小阶对大阶:[x]补=0 10001 001101
0
[x+y]补=1 10000 010000 x+y=-0.110000×2 (2)x-y
1
[x-y]补=0 10001 110010 x-y=0.110010×2
-001-1
(3)x×y x×y=-0.111110×2=-0.111110×2 阶码相加:[ex+ey]移=[ex]移+[ey]补=01111+00001=10000 尾数可采用定点补码乘法(双符号位):[Sx×Sy]补=[Sx]补×[Sy]补=11.100001010111
-001-1
规格化:[x×y]补=1 01111 000010 x×y=-0.111110×2=-0.111110×2 (4)x/y
尾数|Sx|>|Sy|,Sx右移得:[Sx]补=00.011010,[ex]移=10000, 阶码相减:[ex-ey]移=[ex]移+[-ey]补=10000+11111=01111
尾数用补码不恢复余数法:[Sx/Sy]补=[Sx]补/[Sy]补=1.010011(恒置1) OR 1.010100(校正) 规格化:[x/y]补=1 01111 010011 OR 1 01111 010100
-001-001
x/y=-0.101101×2 OR -0.101100×2 3.10 A C Cn Cn+1 移 ALU AND1 Cn Cn+1 CR 位 脉 冲 & AND2 Cn Cn+1 时钟脉冲 Q 结束 B B 寄存器B CT 启动 00. 0 0 0 0 0 1 0 0 1 1 0 0 00. 0 0 0 0 0 0 1 0 0 1 1 0 -x 00. 1 1 0 0 1 整理分享
完美WORD格式
00. 1 1 0 0 1
00. 0 1 1 0 0 1 0 1 0 0 1 1 00. 0 0 1 1 0 0 1 0 1 0 0 1
+x 11. 0 0 1 1 1
11. 0 1 1 0 1 11. 1 0 1 1 0 1 0 1 0 1 0 0 11. 1 1 0 1 1 0 1 0 1 0 1 0
-x 00. 1 1 0 0 1
00. 1 0 1 0 0 0 1 0 1 0 1 0
得 [X×Y]补=0.1010001010 X×Y=0.1010001010
寄存器 运算初态 运算终态 A 00 00000 00 10100 B 11 00111 11 00111 C 1001100 0101010
3.11 说明定点补码和浮点补码加减运算的溢出判断方法。 答:⑴ 定点补码加减运算的溢出判断方法:
① 根据两个操作数的符号与结果的符号判别溢出:OVR=xfyfsf+xfyfsf=?xf?sf??yf?sf? ② 根据两数相加时产生的进位判别溢出:OVR=Cf⊕C1 ③ 根据变形补码运算后的符号判别溢出:
sf1sf2=00,表示结果为正数,无溢出; sf1sf2=11,表示结果为负数,无溢出; sf1sf2=01,表示结果为正溢出; sf1sf2=10,表示结果为负溢出。 ⑵ 浮点补码加减运算的溢出判断方法
浮点补码加减运算的溢出通常是指浮点数上溢,浮点数是否溢出是由阶码是否大于浮点数所能表示的最大正阶来判断的。
例如,设浮点数的阶码采用补码表示,双符号位,这时浮点数的溢出与否可由阶码的符号进行判断: 若阶码 [j]补=01 ××…×,则表示出现上溢,需作溢出处理; 符号
若阶码 [j]补=10 ××…×,则表示出现下溢,按机器零处理。
3.12 说明定点原码除法和定点补码除法运算的溢出判断方法。 答:定点原码不恢复余数除法的溢出算法为:
因为在定点小数运算时,若|被除数|>|除数|,则除法将发生溢出,不能进行除法运算。因此,如果在第一次上商时得到的商为“1”,则表示除法发生溢出。
定点补码不恢复余数除法的溢出算法为:
当被除数[x]补与除数[y]补同号时,如果余数[r]补与[y]补同号,且上商为“1”,则表示商溢出。当被除数[x]补与除数[y]补异号时,如果余数[r]补与[y]补异号,且上商为“0”,则表示商溢出。
3.13 比较舍入方法中截断法、恒置“1”法和0舍1入法的优缺点。 答:⑴ 截断法(恒舍法)
截断法是:将右移移出的值一律舍去,余下的不作任何改变。该方法简单,精度较低。 ⑵ 0舍1入法
0舍1入法的方法是:若右移时被丢掉数位的最高位为0,则舍去;若右移时被丢掉数位的最高位为1,
整理分享
完美WORD格式
则将1加到保留的尾数的最低位。
“0舍1入”法类似于十进制数的“四舍五入”。其主要优点是单次舍入引起的误差小,精度较高;其缺点是加1时需多做一次运算,而且可能造成尾数溢出,需要再次右规。
⑶ 末位恒置1法
末位恒置1法也称冯·诺依曼舍入法。其方法是:尾数右移时,无论被丢掉的数位的最高位为0还是为1,都将保留的尾数的最低位恒置为1。
末位恒置1法的主要优点是舍入处理不用做加法运算,方法简单、速度快且不会有再次右规的可能,并且没有积累误差,是常用的舍入方法。其缺点是单次舍入引起的误差较大。
3.14 利用用十进制加减运算算法计算下列各题:
(1) 125+436=? (2) 125-436=? (3) 436-125=? 解: (1) 125+436=561
(2) 125-436=-311 (3) 436-125=311
3.15 参照第二章表2-12给出的余3码的编码规则,设计利用余3码进行十进制加法的修正逻辑。 答:余3码的编码规则:
十进制数 0 1 2 3 4 5 6 7 8 9 余3码 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100
余3码十进制加法器运算结果的修正关系 十进制数 0 1 2 3 4 5 6 7 8 9 10 11 12 用余3码表示的 十进制和数 F4F3F2F1 C?40 0011 0 0100 0 0101 0 0110 0 0111 0 1000 0 1001 0 1010 0 1011 0 1100 1 0011 1 0100 1 0101 两个余3码按二进制规则相加得到的和数 C4 S4S3S2S1 0 0110 0 0111 0 1000 0 1001 0 1010 0 1011 0 1100 0 1101 0 1110 0 1111 1 0000 1 0001 1 0010 修正逻辑 加 “1101” 修 正 “-3” 整理分享