官术网_书友最值得收藏!

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-223)×2127

最小正數為:0 00000000 10000000000000000000000(22個0)=+21×2128

最大負數為:1 00000000 01111111111111111111111(22個1)=-(21+223)×2128

最小負數為:1 11111111 00000000000000000000000(23個0)=-1×2127

所以其表示數的范圍是:-1×2127~-(21+223)×2128以及+21×2128~+(1-223)×2127

4將下列十進制數表示成IEEE754標準的32位浮點規格化數。

(1)27/64

(2)-27/64

答:27/64=0.011011=(1.1011)2×22

(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|×25,b=|y|×25,則a,b均為正的純小數,且x÷y的數值為a÷b,余數等于a÷b的余數乘以25,則[a]=[|x|×25]=0.11000,[b]=[|y|×25]=0.11111,[-b]=1.00001,故有

即a÷b的商為0.11000;余數為1.11001×25;因為1.11001為負數,加b處理為正數得1.11001+b=1.11001+0.11111=0.11000,所以a÷b的余數為0.11000×25

所以,x÷y的商為-0.11000,余數為0.11000。

(2)商的符號位Sf=1⊕0=1

設a=|x|×25,b=|y|×25,則a,b均為正的純小數,且x÷y的數值等于a÷b;余數等于a÷b的余數乘以25,[a]=[|x|×25]=0.01011,[b]=[|y|×25]=0.11001,[-b]=1.00111,故有

即a÷b的商為0.01110,余數為1.01001×25,因為1.01001位負數,加b處理為正數,即1.01001+b=1.01001+0.11001=0.00010,所以a÷b的余數為0.00010×25

所以,x÷y的商為-0.01110,余數為0.00010。

9設階碼3位,尾數6位,按浮點運算方法,完成下列取值的[x+y],[x-y]運算:

(1)x=2011×0.100101,y=2010×(-0.011110)

(2)x=2101×(-0.010110),y=2100×(-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,真值為2100×(-0.101110)。

求[x-y]的計算過程與[x+y]的計算過程的差別在于尾數求差這一步,如下所示:

上述結果已經規格化,采用0舍1入進行舍入處理,則[x-y]=11,110;0.110001,真值為2010×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,真值為2110×(0.10110)。

而求[x-y]的計算過程與[x+y]的計算過程的差別在于尾數求差這一步,如下所示:

[x-y]=11,100;1.011111,真值為2100×(-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×27,則x÷y余數為0.111000×210。最后可得x÷y的商為0.0110111×21011,規格化處理后為0.110111×26,余數為0.111000×210

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×24,故浮點格式為:

0 01111011 00000000000000000000000

(5)-1/32=-(1.0)2×25,故浮點格式為:

1 01111010 00000000000000000000000

13下列各數使用了IEEE 32位浮點格式,相等的十進制是什么?

(1)1 10000011 110 00000000000000000000

(2)0 01111110 101 00000000000000000000

答:(1)(-1.11×242=(-11100)2=(-28)10

(2)(1.101×212=(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,進位為Ci1,修正之后,和對應的余3碼為Fi0~Fi3,進位為CYi1,則根據余3碼的運算規則有:

當Ci1=0時,Fi3Fi2Fi1Fi0=Si3Si2Si1Si0+1101;當Ci1=1時,Fi3Fi2Fi1Fi0=Si3Si2Si1Si0+0011,由此可畫出邏輯電路圖如圖2-14所示。

圖2-14 余3碼編碼的十進制加法器

主站蜘蛛池模板: 井冈山市| 平乐县| 平舆县| 榆林市| 伊川县| 沙湾县| 望奎县| 荔浦县| 图们市| 孝感市| 麻江县| 轮台县| 海宁市| 加查县| 长白| 府谷县| 青岛市| 白河县| 琼结县| 浦江县| 奉化市| 平乡县| 嘉鱼县| 喀喇沁旗| 海原县| 普陀区| 依安县| 华阴市| 灌阳县| 易门县| 黄平县| 彩票| 呼和浩特市| 聂拉木县| 嵩明县| 巴马| 阿拉善左旗| 阳山县| 乌兰察布市| 北碚区| 盐亭县|