第二章 运算方法和运算器
1.写出下列各数的原码、反码、补码表示(用8位二进制数),其中MSB 是最高位(又是符号位),LSB 是最高位。如果是小数,小数点在MSB 之后;如果是整数,小数点在LSB 之后。
(1) -35/64 (2)23/128 (3) –127 (4)用小数表示-1 (5)用整数表示-1 解:(1)-35/64 = -0.100011
原码1.1000110 反码1.0111001 补码1.0111010
(2)23/128= 0.0010111
原码0.0010111 反码0.0010111 补码0.0010111 (3) –127=1111111
原码11111111 反码10000000 补码10000001 (4) 用小数表示-1 补码1.0000000 (5) 用整数表示-1
原码10000001 反码11111110 补码111111111
2. 设[x]补=a 0. a 1 a 2 …a 6 其中a i 取0或1,若要x>-0.5,求a 0,a 1 , a 2 , … , a 6 的取值。
解:[x]补 = a 0. a 1a 2…a 6 解法一、
(1) 若a 0 = 0, 则x > 0, 也满足x > -0.5
此时a 1→a 6可任意
(2) 若a 0 = 1, 则x <= 0, 要满足x > -0.5, 需a 1 = 1
即a 0 = 1, a 1 = 1, a 2→a 6有一个不为0
解法二、
-0.5 = -0.1(2) = -0.100000 = 1, 100000 (1) 若x >= 0, 则a0 = 0, a 1→a 6任意即可
[x]补 = x = a 0. a 1a 2…a 6 (2) 若x < 0, 则x > -0.5
只需-x < 0.5, -x > 0
[x]补 = -x, [0.5]补 = 01000000 即[-x]补 < 01000000
010000001**6210<+?a a a a 00111111**6210
6210>?a a a a 即a 0a 1 = 11, a 2→a 6不全为0或至少有一个为1(但不是“其余取0”)
3.有一个字长为32位的浮点数,符号位1位,阶码8位,用移码表示,尾数23位,用补码表示;基数为2。请写出:(1)最大数的二进制表示;(2)最小数的二进制表示;(3)规格化数所能表示数的范围。
解:用IEEE754格式(E的取值范围:1~254,留出全0和全1分别表示0和无穷大)
0 11111110 11111111111111111111111即 2127(2-2-23)
(2) 最小数的二进制表示:
1 11111110 11111111111111111111111即 - 2127(2-2-23)
(3) 规格化数所能表示数的范围:
最小的正数:0 00000001 00000000000000000000001 即2-126(1+2-23)
绝对最小的负数:
1 00000001 00000000000000000000001 即-2-126(1+2-23)
所以范围是: -2127(2-2-23)至-2-126(1+2-23) ,2-126(1+2-23)至2127(2-2-23)
4.将下列十进制数表示成IEEE754标准的32位浮点规格化数。
(1) 27/64 (2) – 27/64
解:27/64=0.011011=1.1011*2-2
(1) 0 01111101 10110000000000000000000
(2) 1 01111101 10110000000000000000000
5.已知x和y,用变形补码计算x+y,同时指出结果是否溢出。
(1)x=0.11011 y=0.00011
(2)x=0.11011 y=-0.10101
(3)x=-0.10110 y=-0.00001
解:(1)
x+y = 0.11110
无溢出
x+y = 0.00110
无溢出
(3)x = -0.10110
y = -0.00001
x+y = -0.10111
无溢出
6.已知x和y,用变形补码计算x-y,同时指出运算结果是否溢出。(1)x=0.11011 y=-0.11111
(2)x=0.10111 y=0.11011
(3)x=0.11011 y=-0.10011
解:(1)x = 0.11011
溢出
(2)x = 0.10111
x-y = -0.00100
无溢出
(3)x = 0.11011
7.用原码阵列乘法器、补码阵列乘法器分别计算x*y。
(1)x = 0.11011 y = - 0.11111
(2)x = -0.11111 y = - 0.11011
解:(1)原码阵列
x = 0.11011, y = -0.11111
符号位: x
0⊕y
= 0⊕1 = 1
[x]
原 = 11011, [y]
原
= 11111
[x*y]
原
= 1, 11 0100 0101
直接补码阵列
[x]补 = (0)11011, [y]补 = (1)00001
带求补器的补码阵列
[x]补 = 0 11011, [y]补 = 1 00001 乘积符号位单独运算0⊕1=1
尾数部分算前求补输出│X │=11011,│y │=11111
X ×Y =
(2) 原码阵列
x = -0.11111, y = -0.11011 符号位: x 0⊕y 0 = 1⊕1 = 0 [x]补 = 11111, [y]补 = 11011
[x*y]补 = 0,11010,00101 直接补码阵列
[x]补 = (1)00001, [y]补 = (1)00101
[x*y]补
= 0,11010,00101
带求补器的补码阵列
[x]补 = 1 00001, [y]补 = 1 00101 乘积符号位单独运算1⊕1=0
尾数部分算前求补输出│X │=11111,│y │=11011
X ×Y =0.1101000101
8.用原码阵列除法器计算x ÷y 。 (1)x = 0.11000 y = - 0.11111 (2)x = -0.01011 y = - 0.11001 解:(1) 符号位 Sf = 0⊕1 = 1
去掉符号位后:[y ’]补 = 00.11111 [-y ’]补 = 11.00001
5
2
*
00111
.0
,
11000
.0-
-
=
-
=余数
y
x
(2) 符号位 Sf = 1⊕0 = 1
去掉符号位后:[y’]补 = 00.11001
[-y’]补 = 11.00111
5
2
*
10111
.0
,
01110
.0-
-
=
-
=余数
y
9.设阶码3位,尾数6位,按浮点运算方法,完成下列取值的[x+y],[x-y]运算。
(1)x = 2-011 * 0.100101 y = 2-010 *(- 0.011110)
(2)x = 2-101 *(-0.010110) y = 2-100 * (0.010110)
解:设两数均以补码表示,阶码采用双符号位,尾数采用单符号位,则它们的浮点表示分别为:
题(1) [x]
浮=11 101,0.100101 [y]
浮
=11 110,1.100010
(1)求阶差并对阶
ΔE=Ex-Ey=[Ex]
补-[Ey]
补
=[Ex]
补
+[-Ey]
补
=11 101 + 00 010 =11 111
即ΔE为-1,x阶码小,应使Mx右移1位,Ex加1 [x]
浮
=11 110,0.010010(1)
(2)尾数求和
0.010010(1)
+ 1.100010
1.110100(1)
(3)规格化
可见尾数运算结果的符号位与最高位相同,应执行左规格化处理,每左移尾数一次,相应阶码减1,所以结果尾数为1.010010,阶码为11 100
(4)舍入处理对本题不需要。
(5)判溢出
阶码两符号位为11,不溢出,故最后结果为
[x]
浮+[y]
浮
=11 100,1010010
真值为2-100*(-0.101110)
(2)尾数求差
0.010010(1) + 0.011110
0.110000(1)
[x]
浮-[y]
浮
=11 100,0.110001
真值为2-100*0.110001
题(2) [x]
浮=11 011,1.101010 [y]
浮
=11 100,0.010110
(1)求阶差并对阶
ΔE=Ex-Ey=[Ex]
补-[Ey]
补
=[Ex]
补
+[-Ey]
补
=11 011 + 00 100 =11 111
即ΔE为-1,x阶码小,应使Mx右移1位,Ex加1
[x]
浮
=11 100,1.110101(0)
(2)尾数求和
1.110101(0)
+ 0.010110
0.001011(0)
(3)规格化
可见尾数运算结果的符号位与最高位相同,应执行左规格化处理,每左移尾数一次,相应阶码减1,所以结果尾数为0.101100,阶码为11 010
(4)舍入处理对本题不需要。
(5)判溢出
阶码两符号位为11,不溢出,故最后结果为
[x]
浮+[y]
浮
=11 010,010100
真值为2-110*(0.010100)
10.设数的阶码为3位,尾数6位,用浮点运算方法,计算下列各式(1)(23 ×13/16)×[24×(-9/16)]
(2)(2-2 ×13/32)÷( 23×15/16)
解:(1) Ex = 0011, Mx = 0.110100
Ey = 0100, My = 0.100100
Ez = Ex+Ey = 0111
规格化: 26*0.111011
(2) Ex = 1110, Mx = 0.011010
Ey = 0011, My = 0.111100 Ez = Ex-Ey = 1110+1101 = 1011 [Mx]补 = 00.011010
商 = 0.110110*2-6, 余数=0.101100*2-6
11. 某加法器进位链小组信号为C 4 C 3 C 2 C 1 ,低位来的进位信号为C 0 ,请分另按下述两种方法写出C 4 C 3 C 2 C 1 逻辑表达式: (1)串行进位方式 (2)并行进位方式 解:
4位加法器如上图,
1
111)()(----⊕+=++=++=i i i i i i i i i i i i i i i i i C B A B A C B A B A C B C A B A C
(1)串行进位方式
C 1 = G 1+P 1C 0 其中:G 1 = A 1B 1 P1 = A 1⊕B 1(A 1+B 1也对) C 2 = G 2+P 2C 1 G 2 = A 2B 2 P 2 = A 2⊕B 2 C 3 = G 3+P 3C 2 G 3 = A 3B 3 P 3 = A 3⊕B 3 C 4 = G 4+P 4C 3 G 4 = A 4B 4 P 4 = A 4⊕B 4 (2)并行进位方式 C 1 = G 1+P 1C 0
C 2 = G 2+P 2G 1+P 2P 1C 0
C 3 = G 3+P 3G 2+P 3P 2G 1+P 3P 2P 1C 0
C 4 = G 4+P 4G 3+P 4P 3G 2+P 4P 3P 2G 1+P 4P 3P 2P 1C 0
12. 某机字长16位,使用四位74181组成ALU ,设最低位序号标注为第0位,要求:
(1)写出第5位的进位信号C5的逻辑表达式。
(2)若用一片74182构成二级组间先行进位,请画出逻辑图。 解:
(1)组成最低四位的74181进位输出为:
C 4 = C n+4 = G+PC n = G+PC 0, C 0为向第0位进位
其中,G = y 3+y 2x 3+y 1x 2x 3+y 0x 1x 2x 3,P = x 0x 1x 2x 3,所以 C 5 = y 4+x 4C 4
C 6 = y 5+x 5C 5 = y 5+x 5y 4+x 5x 4C 4 (2)设标准门延迟时间为T ,“与或非”门延迟时间为1.5T ,则进位信号C 0,由最低位传送至C 6需经一个反相器、两级“与或非”门,故产生C 0的最长延迟时间为
T+2*1.5T = 4T
(3)最长求和时间应从施加操作数到ALU 算起:第一片74181有3级“与或非”门(产生控制参数x 0, y 0, C n+4),第二、三片74181共2级反相器和2级“与或非”门(进位链),第四片74181求和逻辑(1级与或非门和1级半加器,设其延迟时间为3T ),故总的加法时间为: t 0 = 3*1.5T+2T+2*1.5T+1.5T+3T = 14T
13.现用通用函数发生器和其他门电路组成一个32位字长并采用辅助函数的三级先进位并行加法器,最低位下标为1,最高位下标为32,要求: (1)写出附加进位链的与或逻辑表达式。 (2)设状态寄存器有4位:V (溢出置位)、Z (结果全零置位)、C (进位置位)、S (结果为负置位)、写出它们的逻辑表达式。 解:串行状态下: C 1 = G 1+P 1C O C 2 = G 2+P 2C 1 C 3 = G 3+P 3C 2 C 4 = G 4+P 4C 3
并行状态下:
C
1 = G
1
+P
1
C
C
2 = G
2
+P
2
C
1
= G
2
+P
2
G
1
+P
2
P
1
C
C
3 = G
3
+P
3
C
2
= G
3
+P
3
G
2
+P
3
P
2
G
1
+P
3
P
2
P
1
C
C
4 = G
4
+P
4
C
3
= G
4
+P
4
P
3
C
2
+P
4
P
3
P
2
C
1
+P
4
P
3
P
2
P
1
C
14.余3码编码的十进制加法器规则如下:两个一位十进制数的余3码相加,如果无进位,则从和数中减去3(加上1101);如结果有进位,则得和数和余3码。试设计余3码编码的十进制加法器单元电路。
解:设余三码编码的两个运算数为X
i 和Y
i
,第一次用二进制加法求和运算的和
数为S
i ’,进位为C
i+1
’,校正后所得的余三码和数为S
i
,进位为C
i+1
,则有:
X
i = X
i3
X
i2
X
i1
X
i0
Y
i = Y
i3
Y
i2
Y
i1
Y
i0
S
i ’ = S
i3
’S
i2
’S
i1
’S
i0
’
i3i3i2i2i1i1i0
i0
15.现给定的芯片只有与或非门和非门,请设计一个行波进位加法器,要求进位链传递时间最短,逻辑图只画出4位即可。
解:(略)
16.设计一个带有原码阵列乘法(使用芯片)和原码阵列除法(使用芯片)的定点运算器。
解:(略)