6.
位来的进位。当加法器分别采用串行进位和
先行进位时,写出四个进位 参考答案: 串行进位:
Ci = XiCo+YiCo + Xi Yi C2 = X2Ci+Y 2Ci + X2 Y2 C3 = X3C2+Y 3C2 + X3 Y3 CA = X4C3+Y 4C3 + XA YA
并行进位:
Ci = XiYi + (Xi+Yi)Co
CA Ci的逻辑表达式。
设AA Ai和B4 Bi分别是四位加法器的两组输入, Co为低
C2 = X2Y2 + (X2+Y2) XiYi + (X2+Y2) (Xi+Yi)Co C3 = X3Y3 + (X3 + 丫
3
)X2Y2 + (X3 + Y 3) (X2 + Y2) XiYi + (X 3 + 丫3)(X 2 + Y2)(Xi + Yi)Co C4=X4Y4+(X
4+Y4)X3Y3+(X4+Y4)(X3+Y3)X2Y2+(X4+Y4)(X3+Y3)(X 2+Y2)XiYi + (X 4+Y4)(X3+Y3) (X 2+Y 2)(Xi+Yi)Co
7. 用SN74i8i和SN74i82器件设计一个i6位先行进位补码加/减运算器,画出运算器的逻辑框图,并 给出零标志、进
位标志、溢出标志、符号标志的生成电路。 参考答案(图略):
逻辑框图参见教材中的图 3.15和图3.16,将两个图结合起来即可,也即只要将图 的每一位Bi取反,得到 Bi,和原码Bi 一起送到一个二路选择器,由进位 Co为1时做减法,此时,选择将
3.15中的B输入端
C0作为选择控制信号。当
Bi作为SN74181的B输入端;否则,当 Co为1时,做加法。
零标志ZF、进位标志CF、溢出标志 OF、符号标志SF的逻辑电路根据以下逻辑表达式画出即可。 ZF=F i5+F i4+F i3+Fi2+Fii+F 10+F9+F8+F 7+F6+F5+F4+F 3+F2+F1+F0 CF=C 16
OF= C 0 (A15B15F15 + A15B15F15) + Co (A15B15F15 + A15B15F15) SF= Fi5
& 用SN74181和SN74182器件设计一个 32位的ALU ,要求采用两级先行进位结构。
(1) 写出所需的SN74181和SN74182芯片数。 (2) 画出32位ALU的逻辑结构图。 参考答案(图略):
将如图3.15所示的两个16位ALU级联起来即可,级联时,低
16位ALU的高位进位 Ci6作为
高16位ALU的低位进位 Co,因此,只要用 8片SN74181和2片SN74182。 9 .已知X = 1O , y = -6,采用6位机器数表示。请按如下要求计算,并把结果还原成真值。
(1) 求[x+y]补,[x -]补。 (2) 用原码一位乘法计算[x ×]原。 3)
用MBA (基4布斯)乘法计算[x ×]补。
(4) 用不恢复余数法计算[x/y]原的商和余数。 (5) 用不恢复余数法计算[x/y]补的商和余数。
参考答案: [10]补=001010 (1)
[ £]补=111010
⑹补=000110
[10]原=001010
[ -6]原=100110
[10+( -6)]补=[10]补 +[ -6]补=001010+111010 = 000100 (+4) [10 - -6)]补=[10]补 +[ -( £)]补=001010+000110 = 010000 (+16)
(2) 先采用无符号数乘法计算 000110的乘积,原码一位乘法过程(前面两个 下:
C 0 0 0 001010× 0省略)如
P Y 说明 P0 = 0 y4 = 0, +0 C P和Y冋时右移一位 得P1 y3 = 1, +X C, P和Y冋时右移一位 得P2 y2 = 1, +X C, P和Y冋时右移一位 得P3 y1 = 0, +0 C, P和Y冋时右移一位 0
0
0
0
0
1
1
1
1
0
0
0 0 0 0 1 + 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 + 1 0 1 0 ( )0 1 1 0 0 1 0 1 0 0 1 0 1 + 1 0 1 0 0 0 )0 1 0 0 1 1 1 1 0 1 1 1 + 0 0 0 0 0 )0 0 ( 1 0 0 0 0 0 1 1 1 1 0 得P4 0 0 0 1 1 0 1 若两个6位数相乘的话,则还要右移两次,得 0符号位为:0
即 X ×Y = -1 1100B = -60
1 = 1 ,因此,[X ×Y]原=1000 0011 1100
(3) [ -10]补=110110 ,布斯乘法过程如下:
说明
设 y-1 = 0, [P0]补=0
y0 y-1 = 00, P、Y直接右移一位 得[P1]补
+ 1 1 0 1 1 0
1 1 0 1 1 0 1 1 1 0 1 1 + 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 + 1 1 0 1 1 0
■ ■■&■■■■■■■■■■■■■■■■■ Buia ■■■■■■■■ J■ Biiaa ■■■■*■■■■■■?■■■■ ruB∣ιι^ιι ■■■?■■■■ n
0 0 1 1 1 0 1
___
1 0 0 1 1 1 0 1 0 0 1 1 1 0
1 1 1 0 0 0 1 1 1 1 0 0 + 0 0 0 0 0 0
1 1 1 1 0 0 1 1 1 1 1 0
rs— tin r—n IIrmll re—s?ι11rrnι
s—τι
y1 y0 =10, +[ -X 补
P2]补 P得、[Y同时右移一位 y2 y1 =01 , +[X]补 P、Y冋时右移一位 得[P3]补
y3 y2 = 10, +[-<]补
P、Y同时右移一位 得
P4] y4 y3 [= 11, 补+0
P、Y同时右移一位 得[P5]补
nil IiirrTIi Irr5∏ιιι rwτι ιιrr,πιι m?,ιιιrsnι IIlTaτιιmι ι
0 0 1 0
ιτ5∏ιιι r—^t IlrrTlll
1 1
s—Ti Iln
+ 0 0 0 0 0 0
1
0 0 1 0 0 1 1
y5 y4 = 11, +0
P、Y同时右移一位 得[P6]补
即 X ×Y = -11 1100B= -60 因[×Y]补=1111 1100
, 此, X 0100(4) 因为除法计算是 2n位数除n位数,所以 ⑹原=0110, [10]原=0000 1010,[-]补=1010,
商的符号位:
0
1 = 1 ,运算过程(前面两个 0省略)如下:
余数寄存器R余数/商寄存器Q
说 明
开始R0 = X
.aa∞-t: IiX-.iasa-iiii:a_.siib^-s:at—(i:iia_.aia^^iia?-biiia-uiai^i.i:ia—
0 0 0 0 + 1 0 1 0
1 0 1 0
!?11!'M>ll∣a**?lll!!
0 1 0 1 +0 1 1 0 1 0 1 1 0 1 1 0 + 0 1 1 0 1 1 0 0 1 0 0 1 + 0 1 1 0 1 1 1 1
JJIII k-il IIMJJll U—l Illl.
MJl IIkJIII :_i IIIL.
R1 = X -
R1< 0,贝U q 4 = 0,没有溢出
b??a∣!bF?!∣a?UBIII?αJ∣a∣>Mi!ll≡?-ua∣l??u!∣a!∣-
l∣a?'Ue∣II^M!a∣?M>!ll≡?^?lll?*?!∣a!U4lllff-
2R1 (R和Q同时左移,空出一位商) R2 = 2R1+Y
R2 < 0,贝U q 3 = 0
2R2 ( R和Q同时左移,空出一位商) R3 = 2R2 +Y
R3 < 0,贝U q 2 = 0
■ ■*■■■■ ajHΛBIII*l ■■■ ISMl IlBaMaBlMsaill aβMBIII*iJ■■ U*a∣IIUH4Blai*lll BMHAIII BUlB IiA-BlllBbIBlllil-Sl
2R3
( R和Q同时左移,空出一位商) R3 = 2R2 +Y
R4 < 0,贝U q1= 0
00001。所以, [X/Y]原=00001 (最高位为符号位),余数为0100。
(5)将10和£分别表示成补码形式为:
[10]补=0 1010 ,[—补=1 1010,计算过程如下:
先对被除数进行符号扩展, [10]补=00000 01010, [6]补=0
0110 余数寄存器说明 开始R0 = [X] 0 0 0 0 0 R余数/商寄存器Q
R1=[X] +[Y] + 1 1 0 1 0
1 1 0 1 0 ................ R1 与.[YL同号,,则..q5=1
1 0 1 0 0 2R1 ( R和Q同时左移,空出一位上商 +0 0 1 1 0 1
1 1 0 1 0 )
1 0 1 0 1 R2 = 2R1+[ Y
+ 0 0 1 1 0 ........ R2与[YL同号,则….q4=. 1, 2R2 (R和Q同时左
1 1 0 1 1 移,空出一位上商
LlllMIEIBI IlMJIBI IuiIiaLBAHIIia. ?ι∣H*\∣B~?ιa∣!' BiiiB-aBiirv
1 1 1 0 + 0 1 1 0 0 1 0 0
商的数值部分为:
IAaJlll-IKU IlMUll UsJJllLUIl IIAaJIII Ii Il IIUalll IU-: JIlIl-Ul IIUΛ1II Il il IIIL&UI IMdJIII k—II:. ................................................................. ............ J .
0 0 0 0 1
2R4 ( R和Q同时左移,空出一位商)
R5 = 2R4+Y
R5 > 0,贝U q 0 = 1
1 0 1 1 0 + 0 0 1 1 0 1 1 1 0 0
rm Immreni ιmτιιι m ιιιrt
1
!l≡ ?≈P?*\?!≡\,???B ■■-≡?8?≡H?\-≡??1\??B?-5\1?!≡=?≡-e∣?,??,,
R3 = 2R2 +[-Y] R3与[Y]同号,贝U q3 = 1
2R3 (R和Q同时左移,空出一位上
0)
n IlrrTlll IraPIITBTIII rm Ilrrml ιrβ,
1 0 1 1 1
商
R4 = 2R3 +[ -Y] 2R4 ( R和Q同时左移,空出一位上商 R与[Y]同号,贝R45= 2R4 +[-Y] U q 2 = 1
1 1 0 0 1
+ 0 0 1 1 0 1 1 1 1 1 n IIlIlnIl IrBB,ιιιranι ιmaιιι H
C 1 1 1 1
■ ■I IHH IiIram Ima
■ ■I m*ιιιrBni ImTIIl r^τι Illr-Sll ≡m?ιιιι IJrf Ilrrnll IIal ιιιrrπι IiT≡?ιιι ιιι--?ss ■
1 1 1 1 0 + 0 0 1 1 0 0 0 1 0 0
1 1 1 1 2R5
R5与[Y]同号,贝U q1= 1 ,
( R和Q同时左移,空出一位上商 1
) R6= 2R5 +[ Y
则 q 0 = 0, Q左移, 空出一位上商 R6与[Y]异号,
+ 0 0 0 0 0
0 0 1 0 0
所以,[X/Y]补=11111,余数为 00100。
商为负数,末位加 1;余数不需要修正
即:X/Y= -0001B = -1 ,余数为 0100B = 4 将各数代入公式
(£) × -) +4=
“除数 ×商+余数=被除数”进行验证,得:
10。
10?若一次加法需要 1ns, 一次移位需要 0.5ns。请分别计算用一位乘法、两位乘法、基于
乘法、基于CSA的阵列乘法四种方式计算两个 8位无符号二进制数乘积时所需的时间。
参考答案:
一位乘法:8次右移,8次加法,共计12ns;
二位乘法:4次右移,4次加法,共计6ns;
CRA的阵列
基于 CRA 的阵列乘法: 每一级部分积不仅依赖于上一级部分积, 还依赖于上一级最终的进位, 而每 一级进位又是串行进行的,所以最长的路径总共经过了
8+2X(8-)=22次全加器,共计约 22ns;
基于 CSA 的阵列乘法:本级进位和本级和同时传送到下一级,同级部分积之间不相互依赖,只进行 O( N)次加法运算,因此,共计约
8nSO
11.在 IEEE 754 浮点数运算中, 当结果的尾数出现什么形式时需要进行左规, 什么形式时需要进行右规? 如何
进行左规,如何进行右规? 参考答案:
(1) 对于结果为± 1x . XX……X的情况,需要进行右规。右规时,尾数右移一位,阶码加 可以表示为:M b M b >2 -1, Eb Eb+1。右规时注意以下两点:
a) 尾数右移时,最高位“ 1 ”被移到小数点前一位作为隐藏位,最后一位移出时,要考虑舍入。 b) 阶码加 1 时,直接在末位加 1。
(2) 对于结果为± 0.00……0 1x……X的情况,需要进行左规。左规时,数值位逐次左移,阶码逐次减1, 直到将第一位 “1”移到小数点左边。假定 k 为结果中“±”和左边第一个 1 之间连续 0的个数,则左 规操作可以表示为:
M b M b ×2k, Eb Eb -k。左规时注意以下两点:
k 位后被移到了第
a) 尾数左移时数值部分最左 k 个 0 被移出,因此,相对来说,小数点右移了 k 位。因为进行尾数相 加时,默认小数点位置在第一个数值位(即:隐藏位)之后,所以小数点右移 一位 1 后面,这个 1 就是隐藏位。
b) 执行Eb Eb -k时,每次都在末位减 1, 一共减k次。
12.在 IEEE 754 浮点数运算中,如何判断浮点运算的结果是否溢出?
参考答案: 浮点运算结果是否溢出,并不以尾数溢出来判断,而主要看阶码是否溢出。尾数溢出时,可通过右 规操作进行纠正。阶码上溢时,说明结果的数值太大,无法表示;阶码下溢时,说明结果数值太小, 可以把结果近似为 0。
在进行对阶、规格化、舍入和浮点数的乘
/除运算等过程中,都需要对阶码进行加、减运算,可能会
)
发生阶码上溢或阶码下溢,因此,必须对阶码进行溢出判断。 (有关对阶码进行溢出判断的方法可参见教材中相关章节。
13.假设浮点数格式为:阶码是
时采用就近舍入到偶数方式) (1) (15/16) × +(2/16) (3) (15/16) × +(2/16)
25× 27×
(2) (15/16) 2×-2∕16) (4) (15/16) 2×-2∕16)
2× 2×
1。右规操作
4 位移码,偏置常数为 8,尾数是 6位补码(采用双符号位) ,用浮点运
算规则分别计算在不采用任何附加位和采用 2 位附加位(保护位、舍入位)两种情况下的值。 (假定 对阶和右规
参考答案(假定采用隐藏位) :
X= (15/16) 27×= 0.111100B 27=×(1.111000)2 ×26 Y1= (2/16) 25×= 0.001000B 25×=(1.000000)2 ×22 Y2= (-2/16) 2×5= -0.001000B 2×5= ( -1 .000000)2 ×22 K= (15/16) 25×= 0.111100B 25=×(1.111000)2 ×24 J1= (2/16) 27×=0.001000B 27×=(1.000000)2 ×24
J2= (-2/16) 2×7= -0.001000B 2×7= (-1.000000)2 ×24 根据题目所给的各种位数,可以得到在机器中表示为: [X] 浮 = 00 1110 (1)111000 [K]浮=00
1100 (1)111000
[Y1] 浮 = 00 [J1]浮=00
1010 (1)000000 1100 (1)000000
[Y2] 浮 = 11 1010 (1)000000 [J2]浮=11
1100 (1)000000
所以,E X = 1110, MX = 00 (1). 111000 ,E yi = 1010, My = 00(1).000000 , E y2 = 1010, My = 11(1).000000 Ek = 1100,MK = 00 (1). 111000 ,E J1 = 1100,MJ1 = 00(1).000000 , E J2 = 1100,MJ2 = 11(1).000000
尾数 M 中小数点前面有三位,前两位为数符,表示双符号,第三位加了括号,是隐藏位“ 没有附加位时的计算: (1)
X+Y1
[Δ E]补=[E χ]移 + [ -E y1]移]补(mod 2 n) = 1110 + 0110 = 0100
1”。
ΔE = 4 ,根据对阶规则可知需要对 y1 进行对阶,结果为: E y1 = E X = 1110, My 1= 000.000100 尾数相加:
Mb = MX + My1 = 001. 111000+ 000.000100 = 00 1 . 1 1 1 1 00 ,两位符号相等,数值部分最高 位为 1 ,不需要进行规格化,所以最后结果为: E=1110, M=00(1).111100, 即(31/32) ×27 ( 2) X+Y2
[Δ E]补=[E x]移 + [ -E y2]移]补(mod 2 n) = 1110 + 0110 = 0100;
ΔE = 4 ,根据对阶规则可知需要对 y2 进行对阶,结果为: E y2 = E X = 1110, My2= 111.111100 尾数相加:
Mb = Mx + My2 = 001. 111000+ 111.111100=001.110100,两位符号相等,数值部分最高为 1,不需要进行规格化,所以最后结果为: E=1110, M=00(1).110100, 即(29/32) 27× ( 3) K+J1
[Δ E]补=[E κ]移 + [ -E J1]移]补(mod 2 n) = 1100 + 0100 = 0000;
Δ E = 0 ,根据对阶规则可知不需要进行对阶。
尾数相加: M b = M κ + M J1 = 001. 111000+ 001.000000= 01 0. 1 1 1 000 ,两位符号不等, 说明尾数溢出, 需要进行右规,最后结果为: E=1101, M=00(1).011100, 即(23/32) 2×6 ( 4) κ+J2
[Δ E]补=[E κ]移 + [ -E J2]移]补(mod 2 n) = 1100 + 0100 = 0000;
Δ E = 0 ,根据对阶规则可知不需要进行对阶。
尾数相加: Mb = Mκ + MJ2 = 00 1. 111000+ 111.000000 = 000.111000,两位符号相等,数值部分最高 位为 0,需要进行左规,所以最后结果为: E=1011, M=00(1).110000, 即(7/8) 2×4 如果有两位附加位精度上会有提高,在对阶的时候要注意小数点后就不是 6 位,而是 8 位,最后 两位为保护位和舍入位。但是由于本题 6 位尾数已经足够,再加 2 位附加位,其结果是一样的。
14.采用 IEEE 754 单精度浮点数格式计算下列表达式的值。
(1)
0.75+(-65.25) (2)0.75-(-65.25)
参考答案:
x = 0.75 = 0.110...0B = (1.10...0) 2 ×2-1
y = -65.25 = -1000001.01000...0B = (-1.00000101...0) 2 ×26 用 IEEE 754 标准单精度格式表示为: 凶浮=0
01111110 10...0
[y]浮=1 10000101 000001010...0
1 ”。
所以, E x = 01111110, Mx = 0 (1). 1...0 , E y = 10000101, My = 1(1).000001010...0 尾数 M x 和 M y 中小数点前面有两位,第一位为数符,第二位加了括号,是隐藏位“ 以下是计算机中进行浮点数加减运算的过程(假定保留 2 位附加位:保护位和舍入位) (1) 0.75+ (-65.25)
① 对阶:[Δ E]补=[Ex]移 + [ -E y]移]补(mod 2n) = 0111 1110 + 0111 1011 = 1111 1001
Δ E = -7,根据对阶规则可知需要对
00.000000110...000
x 进行对阶,结果为: Ex = E y = 10000101, Mx =
保留
x 的尾数 M x 右移 7 位,符号不变,数值高位补
0,隐藏位右移到小数点后面,最后移出的 2 位