1、
(1) -35(=23)16 (2)127 (3)-127 (4)-1
[-35]原=10100011 [127]原=01111111 [-127]原=11111111 [-1]原=10000001
[-35]反=11011100 [127]反=01111111 [-127]反=10000000 [-1]反=11111110
[-35]补=11011101 [127]补=01111111 [-127]补=10000001 [-1]补=11111111
2
当a7=0时,x0,满足x>-0.5的条件,即:若a7=0,a6 a0可取任意值
当a7=1时,x<0,若要满足x>-0.5的条件,则由补码表示与其真值的关系,可知:
要使x>-0.5 ,所以要求a6=1,并且a5a0不能全部为0
所以,要使x>-0.5,则要求a7=0;或者a7= a6=1,并且a5a0至少有一个为1
3、
由题目要求可知,该浮点数的格式为:
31 | 30 23 | 22 0 |
S | E(移码表示) | M(补码表示) |
(1)最大数的二进制表示为:0 11111111 1111……111(23个1)
(2)最小数的二进制表示为:1 11111111 0000……000(23个0)
(3)非IEEE754标准的补码表示的规格化数是指其最高有效位与符号位相反
故有:
最大正数为:0 11111111 1111……111(23个1)=+(1-2-23)2127
最小正数为:0 00000000 1000……000(22个0)=+0.52-128
最大负数为:1 00000000 0111……111(22个1)=-(0.5+2-23)2-128
最小负数为:1 11111111 0000……000(23个0)=-12127
所以其表示数的范围是:+0.52-128+(1-2-23)2127以及-12127-(0.5+2-23)2-128
4、IEEE754标准32位浮点的规格化数为
X=(-1)S1.M2E-127
(1)27/
27/=272-6=(11011)22-6=(1.1011)22-2
所以S=0,E=e+127=125=(01111101)2,M=1011
32位的规格化浮点数为:
00111110 11011000 00000000 00000000,即十六进制的(3ED80000)16
(2)-27/
-27/=-(1.1011)22-2
所以S=1,E=e+127=125=(01111101)2,M=1011
32位的规格化浮点数为:
10111110 11011000 00000000 00000000,即十六进制的(BED80000)16
5、[x+y]补=[x]补+[y]补
(1)x=11011,y=00011
[x+y]补=0011011+0000011=0011110;没有溢出,x+y=11110
(2)x=11011,y=-10101
[x+y]补=0011011+1101011=0000110;
0 0 1 1 0 1 1
+ 1 1 0 1 0 1 1
0 0 0 0 1 1 0
没有溢出,x+y=00110
(3)x=-10110,y=-00001
[x+y]补=1101010+1111111=1101001;没有溢出,x+y=-10111
6、[x-y]补=[x]补+[-y]补
(1)x=11011,y=-11111
[-y]补=0011111
[x-y]补=0011011+0011111=0111010;
0 0 1 1 0 1 1
+ 0 0 1 1 1 1 1
0 1 1 1 0 1 0
正溢出,x-y=+111010
(2)x=10111,y=11011
[-y]补=1100101
[x-y]补=0010111+1100101=1111100;
0 0 1 0 1 1 1
+ 1 1 0 0 1 0 1
1 1 1 1 1 0 0
没有溢出,x-y=-00100
(3)x=11011,y=-10011
[-y]补=0010011
[x-y]补=0011011+0010011=0101110;正溢出,x-y=+101110
7、
(1)x=11011,y=-11111
用原码阵列乘法器
1 1 0 1 1
1 1 1 1 1
1 1 0 1 1
1 1 0 1 1
1 1 0 1 1
1 1 0 1 1
1 1 0 1 1
1 1 0 1 0 0 0 1 0 1
[xy]符号=01=1
所以 [xy]原=1 1101000101
用直接补码阵列乘法器:[x]补=011011,[y]补=100001
(0) 1 1 0 1 1
(1) 0 0 0 0 1
(0) 1 1 0 1 1
(0) 0 0 0 0 0
(0) 0 0 0 0 0
(0) 0 0 0 0 0
(0) 0 0 0 0 0
0 (1) (1) (0) (1) (1)
0 (1) (1) 0 (1) (1) 1 1 0 1 1
将乘积中的符号位用负权表示,其他的负权位化为正权,得:[xy]补=1 0010111011
(2) x=-11111,y=-11011
用原码阵列乘法器
1 1 1 1 1
1 1 0 1 1
1 1 1 1 1
1 1 1 1 1
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1
1 1 0 1 0 0 0 1 0 1
[xy]符号=11=0
所以 [xy]原=0 1101000101
用直接补码阵列乘法器:[x]补=100001,[y]补=100101
(1) 0 0 0 0 1
(1) 0 0 1 0 1
(1) 0 0 0 0 1
(0) 0 0 0 0 0
(1) 0 0 0 0 1
(0) 0 0 0 0 0
(0) 0 0 0 0 0
1 (0) (0) (0) (0) (1)
1 0 0 (1) (1) 0 0 0 1 0 1
将乘积中的符号位用负权表示,其他的负权位化为正权,得:[xy]补=0 1101000101
8、
(1) x=11000,y=-11111
用原码阵列除法器计算,符号位单独处理,商的符号位=01=1
设a=(|x|2-5),b=(|y|2-5),则a,b均为正的纯小数,且 x÷y的数值=(a÷b);余数等于(a÷b)的余数乘以25
下面用不恢复余数法的原码阵列除法器计算a÷b
[a]补=[|x|2-5]补=0.11000,[b]补=[|y|2-5]补=0.11111,[-b]补=1.00001
过程如下:
0. 1 1 0 0 0
+[-b]补 1. 0 0 0 0 1
1. 1 1 0 0 1 ——余数为负,商为0
1. 1 0 0 1 0 ——余数和商左移一位(0)
+[b]补 0. 1 1 1 1 1
0. 1 0 0 0 1 ——余数为正,商为1
1. 0 0 0 1 0 ——余数和商左移一位(01)
+[-b]补 1. 0 0 0 0 1
0. 0 0 0 1 1 ——商为1
0. 0 0 1 1 0 ——(011)
+[-b]补 1. 0 0 0 0 1
1. 0 0 1 1 1 ——商为0
0. 0 1 1 1 0 ——(0110)
+[b]补 0. 1 1 1 1 1
1. 0 1 1 0 1 ——商为0
0. 1 1 0 1 0 ——(01100)
+[b]补 0. 1 1 1 1 1
1. 1 1 0 0 1 ——商为0——(011000)
即:a÷b的商为0.11000;
余数为1.110012-5,因为1.11001为负数,加b处理为正数,1.11001+b=1.11001+0.11111=0.11000,所以a÷b的余数为0.110002-5
所以,(x÷y)的商=-0.11000,原码为:1.11000;余数为0.11000
(2) x=-01011,y=11001
商的符号位=10=1
设a=|x|2-5,b=|y|2-5,则a,b均为正的纯小数,且 x÷y的数值=a÷b;余数等于(a÷b)的余数乘以25
下面用不恢复余数法的原码阵列除法器计算a÷b
[a]补=[|x|2-5]补=0.01011,[b]补=[|y|2-5]补=0.11001,[-b]补=1.00111
过程如下:
0. 0 1 0 1 1
+[-b]补 1. 0 0 1 1 1
1. 1 0 0 1 0 ——余数为负,商为0
1. 0 0 1 0 0 ——余数和商左移一位(0)
+[b]补 0. 1 1 0 0 1
1. 1 1 1 0 1 ——余数为负,商为0
1. 1 1 0 1 0 ——余数和商左移一位(00)
+[b]补 0. 1 1 0 0 1
0. 1 0 0 1 1 ——商为1
1. 0 0 1 1 0 ——(001)
+[-b]补 1. 0 0 1 1 1
0. 0 1 1 0 1 ——商为1
0. 1 1 0 1 0 ——(0011)
+[-b]补 1. 0 0 1 1 1
0. 0 0 0 0 1 ——商为1
0. 0 0 0 1 0 ——(00111)
+[-b]补 1. 0 0 1 1 1
1. 0 1 0 0 1 ——商为0——(001110)
即:a÷b的商为0.01110;
余数为1.010012-5,因为1.01001为负数,加b处理为正数,1.01001+b=1.01001+0.11001=0.00010,所以a÷b的余数为0.000102-5
所以,(x÷y)的商=-0.01110,原码为:1.01110;余数为0.00010
9、
(1)x=2-0110.100101,y=2-010(-0.011110)
EX=-011,Ey=-010,所以 [EX]补=1101,[Ey]补=1110
MX=0.100101,My=-0.011110,所以[MX]补=0.100101,[My]补=1.100010
[x]浮=1101 0.100101,[y]浮=1110 1.100010
EX 对阶后的尾数相加:MX+My=0.010010(1)+1.100010 0. 0 1 0 0 1 0 (1) + 1. 1 0 0 0 1 0 1. 1 1 0 1 0 0 (1) x+y=1.110100(1)21110,化为规格化数(左移2位)为:x+y=1.01001021100,即: x+y=-0.1011102-4 对阶后的位数相减:MX-My=MX+(-My)=0.010010(1)+0.011110 0. 0 1 0 0 1 0 (1) + 0. 0 1 1 1 1 0 0. 1 1 0 0 0 0 (1) x-y=0.110000(1)21110,已经是规格化数,采用0舍1入法进行舍入处理:x-y=0.11000121110,即: x-y=0.1100012-2 (2)x=2-101(-0.010110),y=2-100(0.010110) EX=-101,Ey=-100,所以 [EX]补=1011,[Ey]补=1100 MX=-0.010110,My=0.010110,所以[MX]补=1.101010,[My]补=0.010110 [x]浮=1011 1.101010,[y]浮=1100 0.010110 EX 对阶后的尾数相加:MX+My=1.110101+0.010110 1. 1 1 0 1 0 1 + 0. 0 1 0 1 1 0 0. 0 0 1 0 1 1 x+y=0.00101121100,化为规格化数(左移2位)为:x+y=0.10110021010,即: x+y=0.1011002-6 对阶后的位数相减:MX-My=MX+(-My)=1.110101+1.101010 1. 1 1 0 1 0 1 + 1. 1 0 1 0 1 0 1. 0 1 1 1 1 1 x-y=1.01111121100,已经是规格化数,所以 x-y=-0.1000012-4 10、 (1) Mx=,Ex=0011 My=,Ey=0100 Ex+Ey=0011+0100=0111 [xy]符=01=1,乘积的数值=|Mx||My|: 0. 1 1 0 1 0. 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 所以,xy =-0.0111010120111,规格化处理(左移一位),并采用0舍1入法进行舍入: xy =-0.11101120110 即: =-0.11101126 (2) 将x、y化为规格化数: Mx=,Ex=1110 My=,Ey=0011 Ex-Ey=Ex+(-Ey)=1110+1101=1011 [xy]符=00=0,下面用加减交替法计算尾数MxMy: [Mx]补=0.011010,[My]补=0.111100,[-My]补=1.000100 0. 0 1 1 0 1 0 +[-My]补 1. 0 0 0 1 0 0 1. 0 1 1 1 1 0 ——余数为负,商为0 0. 1 1 1 1 0 0 ——余数和商左移一位(0) +[My]补 0. 1 1 1 1 0 0 1. 1 1 1 0 0 0 ——余数为负,商为0 1. 1 1 0 0 0 0 ——余数和商左移一位(00) +[My]补 0. 1 1 1 1 0 0 0. 1 0 1 1 0 0 ——余数为正,商为1 1. 0 1 1 0 0 0 ——余数和商左移一位(001) +[-My]补 1. 0 0 0 1 0 0 0. 0 1 1 1 0 0 ——商为1 0. 1 1 1 0 0 0 ——(0011) +[-My]补 1. 0 0 0 1 0 0 1. 1 1 1 1 0 0 ——商为0 1. 1 1 1 0 0 0 ——(00110) +[My]补 0. 1 1 1 1 0 0 0. 1 1 0 1 0 0 ——商为1 1. 1 0 1 0 0 0 ——(001101) +[-My]补 1. 0 0 0 1 0 0 0. 1 0 1 1 0 0 ——商为1 1. 0 1 1 0 0 0 ——(0011011) +[-My]补 1. 0 0 0 1 0 0 0. 0 1 1 1 0 0 ——商为1——(00110111) MxMy的商为0.0110111,余数为0.0111002-7,由于x化为0.01101(Mx)是尾数右移2位才得到,所以xy真正的余数是0.0111002-7再尾数左移2位,即0.0111002-9=0.1110002-10 所以,xy的商为:0.011011121011,规格化处理后为:0.11011121010=0.1101112-6,余数为0.1110002-10 11、 不考虑181ALU的函数发生器,而是从简单的全加器出发,则: 若设4位的二进制数为A=A3A2A1A0,B=B3B2B1B0,并设Gi=AiBi,Pi=AiBi,由全加器进位输出的逻辑函数Ci+1=AiBi+Ci(AiBi)可知: (由于进位输出函数还可以写成Ci+1=AiBi+Ci(Ai+Bi),故Pi=Ai+Bi也可) (1) 串行进位方式: C1=A0B0+C0(A0B0)=G0+P0C0 C2=A1B1+C1(A1B1)=G1+P1C1 C3=A2B2+C2(A2B2)=G2+P2C2 C4=A3B3+C3(A3B3)=G3+P3C3 (2) 并行进位方式: C1=G0+P0C0 C2=G1+P1C1=G1+P1(G0+P0C0)=G1+P1G0+P1P0C0 C3=G2+P2C2=G2+P2(G1+P1G0+P1P0C0)=G2+P2G1+P2P1G0+P2P1P0C0 C4=G3+P3C3=G3+P3G2+P3P2G1+P3P2P1G0+P3P2P1P0C0 12、 (1) -5 -5=-(101)2=-(1.01)222 所以 S=1 E=e+127=2+127=129=(81)16=(10000001)2 M=(010 0000 0000 0000 0000 0000)2 故浮点格式为: 1 10000001 010 0000 0000 0000 0000 0000,用十六进制表示为:(C0A00000)16 (2) -1.5 -1.5=-(1.1)2=-(1.1)220 所以 S=1 E=e+127=0+127= (7F)16=(01111111)2 M=(100 0000 0000 0000 0000 0000)2 故浮点格式为: 1 01111111 100 0000 0000 0000 0000 0000,用十六进制表示为:(BFC00000)16 (3) 384 384=(180)16=(1 1000 0000)2=(1.1)228 所以 S=0 E=e+127=8+127=135= (87)16=(10000111)2 M=(100 0000 0000 0000 0000 0000)2 故浮点格式为: 0 10000111 100 0000 0000 0000 0000 0000,用十六进制表示为:(43C00000)16 (4) 1/16 1/16= (1.0)22-4 所以 S=0 E=e+127=-4+127= (7B)16=(01111011)2 M=(000 0000 0000 0000 0000 0000)2 故浮点格式为: 0 01111011 000 0000 0000 0000 0000 0000,用十六进制表示为:(3D800000)16 (5) -1/32 -1/32=-(1.0)22-5 所以 S=1 E=e+127=-5+127= (7A)16=(01111010)2 M=(000 0000 0000 0000 0000 0000)2 故浮点格式为: 1 01111010 000 0000 0000 0000 0000 0000,用十六进制表示为:(BD000000)16 13、 (1) 1 10000011 110 0000 0000 0000 0000 0000 S=1 E=(83)16=131 e=E-127=131-127=4 1.M=(1.11)2 所以,该浮点数为 -(1.11)224=-(11100)2=-28 (2) 0 01111110 101 0000 0000 0000 0000 0000 S=0 E=(7E)16=126 e=E-127=126-127=-1 1.M=(1.101)2 所以,该浮点数为 (1.101)22-1=(0.1101)2=0.8125 14、 IEEE754标准中,32位二进制数仍然有232种不同的组合,但是由于在IEEE754标准中,阶码为全1并且尾数为非0的情况不表示一个数。尾数23位,尾数非0有223-1种组合,再配合符号位,共有2(223-1)种组合不表示一个数 所以,该格式最多能表示不同的数的个数为: 232-2(223-1) 15、该运算器电路由3部分组成:ALU完成定点加减法运算和逻辑运算;专用阵列乘法器完成乘法运算;专用阵列除法器完成除法运算。具体逻辑电路略。 16、 该ALU能完成8种运算,故使用3个控制参数S0S2。 运算器中含有: (1) 一个4位的加法器:完成加法、减法、加1和传送4种操作,其中加1操作是把加数固定为1,利用4位的加法器实现;传送是把加数固定为0,利用4位加法器实现。 (2) 一个4位的求补器:完成求补操作。 (3) 求反、逻辑乘和逻辑加分别设计专门的逻辑电路实现。 具体电路略 17、 181ALU中的有些操作是冗余的或可由其他操作替代的,现要求简化为8种运算,故对181的运算种类进行简化,得到4种逻辑运算和4种算术运算,具体功能表如下: 控制参数 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 AB A+B AB A加B A减B减1 A+A A 逻辑运算中:通过对“A”求反得到;通过对“A+B”求反得到;通过对“AB”与“”进行逻辑与实现;通过对“AB”取反得到;通过“AB”并让A固定为全1得到;通过对“AB”与“A”进行逻辑与实现;通过对前面得到的再取反得到;通过对“AB”取反得到;B通过“AB”并让A固定为全0得到;逻辑1通过对“逻辑0”取反得到;通过对前面得到的再取反得到 算术运算中:减1操作可通过“A减B减1”并令B固定为0来实现; 18、 余3码编码的十进制加法规则是:两个1位十进制数的余3码相加,如结果无进位,则从和数中减去3(即加上1101);如结果有进位,则和数中加上3(加上0011),即得和数的余3码。 设参加运算的两个一位的十进制数分别为Ai和Bi,它们的余3码分别为Ai0Ai3和Bi0Bi3,其二进制加法的和的编码为Si0Si3,进位为Ci+1,修正之后,和对应的余3码为Fi0Fi3,进位为CYi+1,则根据余3码的运算规则,有: 当Ci+1=0时,Fi3Fi2Fi1Fi0=Si3Si2Si1Si0+1101;当C i+1=1时,Fi3Fi2Fi1Fi0=Si3Si2Si1Si0+ 0011,由此可画出逻辑电路图如下:
而181其他的逻辑运算和算术运算都可以由以上的运算间接得到,例如:S2 S1 S0 运算 0 0 0 逻辑0