- 白中英《計算機組成原理》(第5版)筆記和課后習題詳解
- 圣才電子書
- 4307字
- 2021-06-08 15:16:11
2.2 課后習題詳解
1寫出下列各整數的原碼、反碼、補碼表示(用8位二進制數)。其中MSB是最高位(符號位),LSB是最低位。
(1)-35
(2)127
(3)-127
(4)-1
答:根據原碼、反碼、補碼之間的轉換關系可得:
(1)[-35]原=1010 0011
[-35]反=1101 1100
[-35]補=1101 1101
(2)[127]原=0111 1111
[127]反=0111 1111
[127]補=0111 1111
(3)[-127]原=1111 1111
[-127]反=1000 0000
[-127]補=1000 0001
(4)[-1]原=1000 0001
[-1]反=1111 1110
[-1]補=1111 1111
2設[x]補=a7.a6a5…a0,其中ai取0或1,若要x>-0.5,求a0,a1,a2,…,a6的取值。
答:[x]補=a7.a6a5…a0
①若a7=0,則x>0,滿足x>-0.5,此時a0到a6可任意取值;
②若a7=1,則x≤0,要滿足x>-0.5,需a6=1,即a7=1,a6=1,a0到a5不全為0。
3有一個字長為32位的浮點數,符號位1位;階碼8位,用移碼表示;尾數23位,用補碼表示;基數為2。請寫出:
(1)最大數的二進制表示;
(2)最小數的二進制表示;
(3)規格化數所能表示的數的范圍。
答:該浮點數的格式如圖2-10所示。
圖2-10 該浮點數的格式
由于S是數符,已表示了尾數的符號,所以為了提高表示精度,M(23位)不必存儲符號位,只需要存小數點后面的有效數值即可。
(1)最大數的二進制表示為:0 11111111 11111111111111111111111(23個1);
(2)最小數的二進制表示為:1 11111111 00000000000000000000000(23個0);
(3)非IEEE754標準的補碼表示的規格化數是指其最高位有效位與符號位相反,故有:
①最大正數為:0 11111111 11111111111111111111111(23個1)=+(1-2-23)×2127
②最小正數為:0 00000000 10000000000000000000000(22個0)=+2-1×2-128
③最大負數為:1 00000000 01111111111111111111111(22個1)=-(2-1+2-23)×2-128
④最小負數為:1 11111111 00000000000000000000000(23個0)=-1×2127
所以其表示數的范圍是:-1×2127~-(2-1+2-23)×2-128以及+2-1×2-128~+(1-2-23)×2127。
4將下列十進制數表示成IEEE754標準的32位浮點規格化數。
(1)27/64
(2)-27/64
答:27/64=0.011011=(1.1011)2×2-2
(1)27/64的32位浮點規格化數的表示為0 01111101 10110000000000000000000
(2)-27/64的32位浮點規格化數的表示為1 01111101 10110000000000000000000
5已知x和y,用變形補碼計算x+y,同時指出結果是否溢出。
(1)x=11011,y=00011
(2)x=11011,y=-10101
(3)x=-10110,y=-00001
答:采用雙符號位判斷是否溢出。
(1)[x]補=00 11011,[y]補=00 00011,故有
x+y=11110,結果未溢出。
(2)[x]補=00 11011,[y]補=11 01011,故有
x+y=00110,結果未溢出。
(3)[x]補=11 01010,[y]補=11 11111,故有
x+y=-10111,結果未溢出。
6已知x和y,用變形補碼計算x-y,同時指出運算結果是否溢出。
(1)x=11011,y=-11111
(2)x=10111,y=11011
(3)x=11011,y=-10011
答:[x-y]補=[x]補-[y]補=[x]補+[-y]補,采用雙符號位判斷是否溢出。
(1)[x]補=00 11011,[-y]補=00 11111,故有
符號位為01,結果正溢出。
(2)[x]補=00 10111,[-y]補=11 00101,故有
x-y=-00100,結果未溢出。
(3)[x]補=00 11011,[-y]補=00 10011
符號位為01,結果正溢出。
7用原碼陣列乘法器、補碼陣列乘法器分別計算x×y。
(1)x=11011,y=-11111
(2)x=-11111,y=-11011
答:(1)①原碼陣列乘法
x=11011,y=-11111;
[x]原=0 11011,[y]原=1 11111;
符號位:x0⊕y0=0⊕1=1,故有
則[x×y]原=1 1101000101,x×y=-11 0100 0101。
②直接補碼陣列乘法
[x]補=0 11011,[y]補=1 00001,故有
[x×y]補=1 0010111011,x×y=-11 0100 0101
(2)①原碼陣列乘法
[x]原=1 11111,[y]原=1 11011;
符號位單獨運算:x0⊕y0=1⊕1=0,故有
[x×y]原=0 1101000101,x×y=11 0100 0101。
②直接補碼陣列乘法
[x]補=1 00001,[y]補=1 00101,故有
[x×y]補=0 11010 00101,x×y=11 0100 0101
8用原碼陣列除法器計算x÷y(注:先乘1個比例因子變成小數)。
(1)x=11000,y=-11111
(2)x=-01011,y=-11001
答:(1)用原碼陣列除法器計算,符號位單獨計算,Sf=0⊕1=1;
設a=|x|×2-5,b=|y|×2-5,則a,b均為正的純小數,且x÷y的數值為a÷b,余數等于a÷b的余數乘以25,則[a]補=[|x|×2-5]補=0.11000,[b]補=[|y|×2-5]補=0.11111,[-b]補=1.00001,故有
即a÷b的商為0.11000;余數為1.11001×2-5;因為1.11001為負數,加b處理為正數得1.11001+b=1.11001+0.11111=0.11000,所以a÷b的余數為0.11000×2-5。
所以,x÷y的商為-0.11000,余數為0.11000。
(2)商的符號位Sf=1⊕0=1
設a=|x|×2-5,b=|y|×2-5,則a,b均為正的純小數,且x÷y的數值等于a÷b;余數等于a÷b的余數乘以25,[a]補=[|x|×2-5]補=0.01011,[b]補=[|y|×2-5]補=0.11001,[-b]補=1.00111,故有
即a÷b的商為0.01110,余數為1.01001×2-5,因為1.01001位負數,加b處理為正數,即1.01001+b=1.01001+0.11001=0.00010,所以a÷b的余數為0.00010×2-5。
所以,x÷y的商為-0.01110,余數為0.00010。
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,則[x+y]浮的計算過程如下:
①求階差并對階
ΔE=Ex-Ey=[Ex]補-[Ey]補=[Ex]補+[-Ey]補=11101+00010=11111
即ΔE為-1,x階碼小,根據小階向大階看齊的原則,應使Mx右移1位,Ex加1,則
[x]浮=11,110;0.010010(1)
②尾數求和
③規格化:尾數運算結果的符號位與最高有效位的數據相同,應該執行左規格化處理,尾數每左移一次,相應階碼減1,所以結果尾數為1.010010,階碼為11100;
④舍入處理:本題不需要進行舍入操作;
⑤判斷溢出:階碼兩符號位為11,結果未溢出。
故最后結果為:
[x+y]浮=11,100;1.010010,真值為2-100×(-0.101110)。
求[x-y]浮的計算過程與[x+y]浮的計算過程的差別在于尾數求差這一步,如下所示:
上述結果已經規格化,采用0舍1入進行舍入處理,則[x-y]浮=11,110;0.110001,真值為2-010×0.110001。
(2)設階碼和尾數均以補碼表示,階碼采用雙符號位,尾數采用單符號位,則它們的浮點表示分別為:
[x]浮=11,011;1.101010,[y]浮=11,100;0.010110
①求階差并對階
Δ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)
②尾數求和
③規格化
可見尾數運算結果的符號位與最高有效位的數據相同,應執行左規格化處理,每左移尾數一次,相應階碼減1,所以結果尾數為0.101100,階碼為11010;
④舍入處理:本題不需要;
⑤判斷溢出:階碼兩符號位為11,沒有溢出。
故最后結果為[x]浮+[y]浮=11,010;0.10110,真值為2-110×(0.10110)。
而求[x-y]浮的計算過程與[x+y]浮的計算過程的差別在于尾數求差這一步,如下所示:
[x-y]浮=11,100;1.011111,真值為2-100×(-0.100001)。
10設數的階碼3位,尾數6位,用浮點運算方法,計算下列各式:
(1)
(2)
答:(1)假設階碼采用補碼表示,尾數采用原碼表示,階碼和尾數均采用單符號位,階碼為3位,尾數為6位,則[x]浮=0,011;0.110100,[y]浮=0,100;1.100100。
①尾數符號位:符號位Sf=0⊕1=1,去掉尾數符號位后,得到
Ex=0011,Mx=0.110100
Ey=0100,My=0.100100
②階碼相加:Ez=Ex+Ey=0111;
③尾數相乘:Mz=Mx×My
得到Mz=0.01110101;
④規格化:執行左規格化,尾數每左移一位階碼減1,得到Ez=0110,Mz=0.1110101;
⑤舍入處理:采用四舍五入,得到Mz=0.111011,最后加上符號,得
(2)假設階碼與尾碼采用補碼表示,且均用單符號位,階碼為3位,尾數為6位,則
[x]浮=1,110;0.011010,Ex=1110,Mx=0.011010
[y]浮=0,011;0.111100,Ey=0011,My=0.111100
①尾數符號位:符號位Sf=0⊕0=0;
②階碼相減:Ez=Ex-Ey=1 110-0011=1011;
③尾數相除:Mz=Mx÷My
Mx÷My的商為0.0110111,余數為0.011100×2-7,則x÷y余數為0.111000×2-10。最后可得x÷y的商為0.0110111×21011,規格化處理后為0.110111×2-6,余數為0.111000×2-10。
11某加法器進位鏈小組信號為C4C3C2C1,低位來的進位信號為C0,請分別按下述兩種方式寫出C4C3C2C1的邏輯表達式:
(1)串行進位方式
(2)并行進位方式
答:4位加法器如圖2-11所示。
圖2-11 4位加法器
其進位邏輯表達式為
(1)串行進位方式的邏輯表達式
C1=G1+P1C0,其中G1=A1B1,P1=A1⊕B1;
C2=G2+P2C1,其中G2=A2B2,P2=A2⊕B2;
C3=G3+P3C2,其中G3=A3B3,P3=A3⊕B3;
C4=G4+P4C3,其中G4=A4B4,P4=A4⊕B4。
(2)并行進位方式的邏輯表達式
C1=G1+P1C0;
C2=G2+P2G1+P2P1C0;
C3=G3+P3G2+P3P2G1+P3P2P1C0;
C4=G4+P4G3+P4P3G2+P4P3P2G1+P4P3P2P1C0。
12用IEEE 32位浮點格式表示如下的數:
(1)-5
(2)-1.5
(3)384
(4)1/16
(5)-1/32
答:IEEE浮點格式的階碼減去127為真值指數。
(1)-5=-(101)2=-(1.01)2×22,故浮點格式為:
1 10000001 01000000000000000000000
(2)-1.5=-(1.1)2=-(1.1)2×20,故浮點格式為:
1 01111111 10000000000000000000000
(3)384=(180)16=(1 1000 0000)2=(1.1)2×28,故浮點格式為:
0 10000111 10000000000000000000000
(4)1/16=(1.0)2×2-4,故浮點格式為:
0 01111011 00000000000000000000000
(5)-1/32=-(1.0)2×2-5,故浮點格式為:
1 01111010 00000000000000000000000
13下列各數使用了IEEE 32位浮點格式,相等的十進制是什么?
(1)1 10000011 110 00000000000000000000
(2)0 01111110 101 00000000000000000000
答:(1)(-1.11×24)2=(-11100)2=(-28)10
(2)(1.101×2-1)2=(0.1101)2=(0.8125)10
1432位格式最多能表示232個不同的數,用IEEE 32位浮點格式最多能表示多少不同的數?為什么?
答:IEEE754標準中,32位二進制數仍然有232種不同組合,但是由于在IEEE754中,階碼為全1且尾數為非0的情況不表示一個數。尾數23位,尾數非0有223-1種組合,再配合符號位,共有2×(223-1)種組合不表示一個數,所以該格式最多能表示不同的數的個數為232-2×(223-1)。
15設計一個帶有原碼陣列乘法器(使用芯片)和原碼陣列除法器(使用芯片)的定點運算器。
答:設輸入的數據為X和Y,則會把數據驅動到原碼乘法器和原碼除法器芯片上,并且它是通過操作控制信號選通相應的芯片進行指定運算的,因此設計如圖2-12所示。
圖2-12 帶原碼陣列乘法及除法器的定點運算器
16設計一個ALU(4位),完成加、減、取反、取補、邏輯乘、邏輯加、傳送、加1等8種運算功能。
答:8種功能運算,需要采取的控制端個數為3個,通過對控制端信號的邏輯組成產生相應運算功能的邏輯編碼,其對應關系如表2-2所示。
表2-2 8種功能運算的編碼組成
如圖2-13所示。
圖2-13 完成8種功能的ALU
17改進74181ALU芯片設計,操作控制信號只有8種。
答:74181ALU可以簡化為4種邏輯運算和4種算數運算,通過S2、S1、S0的邏輯組合,可以表示8種狀態,這時通過控制相應狀態邏輯的開或關,即可構成一種操作控制。
18設計一個余3碼編碼的十進制加法器單元電路。
答:余3碼編碼的十進制加法規則是:兩個1位十進制數的余3碼相加,如結果無進位,則從和數中減去3(即加上1101);如結果有進位,則和數中加上3(加上0011),即得和數的余3碼。
設參加運算的兩個一位的十進制數分別為Ai和Bi,它們的余3碼分別為Ai0~Ai3和Bi0~Bi3,其二進制加法的和的編碼為Si0~Si3,進位為Ci+1,修正之后,和對應的余3碼為Fi0~Fi3,進位為CYi+1,則根據余3碼的運算規則有:
當Ci+1=0時,Fi3Fi2Fi1Fi0=Si3Si2Si1Si0+1101;當Ci+1=1時,Fi3Fi2Fi1Fi0=Si3Si2Si1Si0+0011,由此可畫出邏輯電路圖如圖2-14所示。
圖2-14 余3碼編碼的十進制加法器
- 服裝畫表現技法
- 周三多《管理學》(第3版)【教材精講+考研真題解析】講義與視頻課程【33小時高清視頻】
- 2020年內蒙古自治區選聘大學生村官考試《基本素質測試》題庫【真題精選+章節題庫+模擬試題】
- 2020年江西公務員錄用考試專項教材:言語理解與表達【考點精講+典型題(含歷年真題)詳解】
- 數據結構(Java語言版)
- 工程制圖與3D建模習題集
- 教育知識與能力(中學)
- 煤化學
- UPS電源技術及應用
- 2020年課程與教學論考研真題與典型題詳解
- David Nunan《第二語言教與學》配套題庫【課后練習+章節題庫(含名校考研真題)+模擬試題】
- 專精特新“小巨人”企業發展研究
- 新型磁探測技術
- 2020年天津市選聘大學生村官考試《綜合知識》考點精講及典型題(含歷年真題)詳解
- 編劇原理