版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章運算方法與運算器計算機中的數據表示,熟悉包括定點數、浮點數、字符、十進制數的表示方法;原碼、補碼、反碼、移碼等碼制之間的關系以及各碼制之間真值數的轉換;補碼的加減運算,定點原碼一位乘、除運算,定點補碼一位乘、除運算及其邏輯結構;變形補碼、運算方法(尤其是補碼)的理解,溢出、進位等問題的出現和解決方法;定點數的變形補碼加減運算;原、補碼乘法和除法運算;浮點運算方法和浮點數的規格化及其邏輯結構;運算器的基本結構和設計方法,解已知芯片功能。本章要求:主要內容:2.1數據與文字的表示方法。2.2定點加、減法運算。
2.3定點乘法運算。2.6浮點運算方法與浮點運算器。2.5定點運算器的組成與結構2.4定點除法運算。2.1數據信息的表示方法2.1.1
數據數值的表示方法2.1.2
非數據數值的表示方法2.1.1數值數據的表示正、負符號二進制的絕對值真值機器數0或1二進制的絕對值符號數值部分1.真值與機器數1.真值與機器數例:設機器字為8b字長,數N1的真值為(+1001110)2,數N2的真值為(-1001110)2,則N1
、N2對應的機器數為:0N1100111011001110N2符號數值部分2.數的機器碼表示通常有四種表示法:原碼表示法補碼表示法反碼表示法移碼表示法(1)原碼表示法0或1二進制的絕對值純小數原碼表示定義純整數原碼表示定義原碼純小數原碼表示定義純小數時,設x=x0.x1x2…
xn-1,其中x0為符號位,共n位字長,則
X0≤X≤1-2-(n-1)
1-X=1+|x|-(1-2-(n-1))≤X≤0
[X]原=例如,若x1=+0.1011x2=-0.1011,字長為8b,則其原碼分別為:[x1]原=0.1011000[x2]原=1+0.1011000=1.1011000零的原碼有正零和負零兩種形式:[+0]原=0.00...00[-0]原=1.00...00純整數原碼表示定義純整數時,設x=x0x1x2…
xn-1,其中x0為符號位,共n位字長,則
X0≤X≤2(n-1)-1
2(n-1)-X=2(n-1)+|x|-(2(n-1)-
1)≤X≤0
[X]原=例如,若x1=+1011x2=-1011,字長為8b,則其原碼分別為:[x1]原=00001011[x2]原=27+00001011=10001011零的原碼有正零和負零兩種形式:[+0]原=000...00[-0]原=100...00采用原碼表示法簡單易懂,但它的最大缺點是加法運算復雜。當兩數相加時,如果是同號則數值相加;如果是異號,則要進行減法。而在進行減法時還要比較絕對值的大小,然后大數減去小數,最后還要給結果選擇符號。(2)補碼表示法計算機中,運算結果≥模數時,說明該值已超出機器的表示范圍,模數自然丟掉。模/模數:計算器具的容量。計算機中,機器數表示數據的字長即位數是固定的。n位數的模數=n位數全為1后,再在最末位加1n位整數的模數=2n
n位小數的模數=2純小數補碼表示定義純小數時,設x=x0.x1x2…
xn-1,其中x0為符號位,共n位字長,則
X0≤X≤1-2-(n-1)
2+X=2-|x|-1
≤X≤0
[X]補=例如,若x1=+0.1011x2=-0.1011,字長為8b,則其原碼分別為:[x1]補=0.1011000[x2]補=2-0.1011000=1.0101000補碼的零只有一個,即0.0000000。補碼1.0000000表示負1(mod2)純整數補碼表示定義純整數時,設x=x0x1x2…
xn-1,其中x0為符號位,共n位字長,則
X0≤X≤2(n-1)-1
2n+X=2n-|x|-2(n-1)≤X≤0
[X]補=例如,若x1=+1011x2=-1011,字長為8b,則其原碼分別為:[x1]補=00001011[x2]補=28-00001011=11110100(mod2n)對補碼進行運算,可將加、減運算統一成加法運算,降低了對計算機運算器的要求,因此得到廣泛的應用。原碼求補碼的方法:正數,不變(相同)即原碼=補碼;負數,符號位不變,數值位按位取反加1。補碼求真值方法:正數,[x]補=[x]原負數,對[[x]補]補=
[x]原原碼求真值:[x]原符號位0→+,1→-。補碼的運算結果仍為補碼。(3)反碼表示法對于正數來說,反碼=原碼=補碼。對于負數來說,符號位:與原碼、補碼的符號位定義相同。數值:將原碼的數值位按位變反。例如,若x1=+0.1011x2=-0.1011,字長為8b。[x1]反=0.1011000=[x1]原=[x1]補[x2]反=1.0100111[x2]補=1.0101000[x2]原=1.1011000反碼的零有兩個0.0000和1.11111(4)移碼移碼也叫增碼,常用來表示整數形式的計算機浮點數的階碼(表示指數)。若純整數X為n位(包括符號位),則其移碼定義為:
[x]移=2n-1+[x]補-2n-1≤X≤2n-1-1方法:補碼將符號位求反可得移碼設字長為8b,若x1=+1000(2),
x2=-1000(2),
[x1]補=00001000[x1]移=10001000[x2]補=11111000[x2]移=01111000原、反、補、移碼轉換方法正數原碼=反碼=補碼移碼=補碼符號位取反,數值位不變負數反碼=原碼符號位不變,數值位取反補碼=反碼末位加1移碼=補碼符號位取反,數值位不變3.數的定點表示計算機中小數的小數點并不是用某個數字來表示的,而是用隱含的小數點的位置來表示。根據小數點的位置是否固定,又可分為定點表示定點小數表示形式定點整數表示形式浮點表示3.數的定點表示
⑴定點小數將小數點固定在符號位d0之后、數值最高位d-1之前,這就是定點小數形式。其格式如下所示:⑵定點整數將小數點固定在數的最低位d-(n-1)之后,這就是定點整數形式。其格式如下所示:d0d-1d-2……………d-(n-1)△d0d-1d-2…………….d-(n-1)△①設字長為8b,用原碼表示時,其表示范圍如下:
最小負數最大負數最小正數最大正數
1.11111111.00000010.00000010.1111111-(1-2-7)-2-72-71-2-7定點小數的表示范圍:②設字長為8b,用補碼表示時,其表示范圍如下:
最小負數最大負數最小正數最大正數
1.00000001.11111110.00000010.1111111
-1-2-72-71-2-7①設字長為8b,用原碼表示時,其表示范圍如下:
最小負數最大負數最小正數最大正數
11111111100000010000000101111111-(27-1)=-127-1
+1
27-1=127②設字長為8b,用補碼表示時,其表示范圍如下:
最小負數最大負數最小正數最大正數
10000000111111110000000101111111
-27=-128-1
+1
27-1=127定點整數的表示范圍:4.數的浮點表示法⑴浮點數的表示格式浮點表示法把字長分成階碼(表示指數)和尾數(表示數值)兩部分。X=D×RE階碼E:用整數形式表示,指明小數點在數據中的位置,決定了浮點數的表示范圍。尾數D:用定點小數表示,給出有效數字的位數決定了浮點數的表示精度;階碼的底R:一般為2、8或16,且隱含規定,在浮點數表示中不出現,通常取2;JEm-1…E1SD-1…D-(n-1)階符階碼值數符尾數值決定范圍決定精度第一種浮點格式補碼定點整數形式補碼定點小數表示形式浮點數另一種格式:
SJEm-1…E1D-1…D-(n-1)階符階碼值數符尾數值存儲的數X可表示為X=D×2E。補碼定點整數形式⑵浮點數的規格化為了使浮點表示法有盡可能高的精度:措施之一,是增加位數,或者是在字長一定的情況下,將階碼和尾數所占的位數協調好;措施之二,是采用浮點數規格化表示。即充分利用尾數的二進制數位來表示更多的有效數字。浮點數規格化①原碼規格化后正數為0.1×……×的形式。負數為1.1×……×的形式。②補碼規格化后正數為0.1×……×的形式。負數為1.0×……×的形式。通過調整階碼,使其尾數D滿足下面形式的數:當尾數的值不為0時,尾數域的最高有效位應為1,否則以修改階碼同時左右移小數點的辦法,使其變成這一表示形式。⑶浮點數的表示舉例某機用32b表示一個數,階碼部分占8b(含一位符號位),尾數部分占24b(含一位符號位)。設x1=-256.5,x2=127/256,試寫出x1和x2的兩種浮點數表示格式。例2.1
①x1=-256.5=-(100000000.1)2=-29×0.1000000001
階碼的補碼為(+9)補=00001001
階碼的移碼為(+9)移=10001001
尾數=1.01111111110000000000000(規格化補碼)第一種浮點表示的格式為
00001001,1.01111111110000000000000
第二種浮點表示的格式為
1,10001001,01111111110000000000000解:移碼補碼②x2=127/256=(1111111)2×2-8=2-1×0.1111111
階碼的補碼為(-1)補=11111111
階碼的移碼為(-1)移=01111111
尾數=0.11111110000000000000000(規格化補碼)第一種浮點表示的格式為
11111111,0.11111110000000000000000
第二種浮點表示的格式為
0,01111111,11111110000000000000000解⑷浮點數的表示范圍
設階碼和尾數各為4b(各包含一個符號位),則其浮點數的表示表示范圍分別為:①階碼范圍
最小負數最大負數最小正數最大正數
1000111100010111 -27=-8-1
+1
23-1=7②規格化尾數表示范圍
最小負數最大負數最小正數最大正數
1.0001.0110.1000.111-1-(2-3+2-1)
2-11-2-3二進制補碼十進制真值二進制補碼十進制真值
最小負數最大負數最小正數最大正數
20111×1.00021000×1.01121000×0.10020111×0.11121111×1.00020000×1.01120000×0.10021111×0.111-27×1-2-8×(2-3+2-1)
2-8×2-127×(1-2-3)③規格化浮點數表示范圍二進制補碼階碼用移碼十進制真值這里規格化尾數的最大負數的補碼是1.01…1的形式,而不是1.10…0的形式,是因為1.10…0不是規格化數,所以規格化尾數的最大負數應是:
-(0.10…0+0.0…01)=-0.10…01,而[-0.10…1]補=1.01…1,即-(2-(n-1)+2-1)注意:(5)溢出問題定點形式判斷溢出的辦法是對數值本身進行判斷,浮點數是對規格化后的階碼進行判斷。當一個浮點數階碼大于機器的最大階碼,稱為上溢;機器產生上溢時,不能再繼續運算,一般要進行中斷處理。而小于最小階碼時,稱為下溢。出現下溢時,一般規定把浮點數各位強迫為零(當做零處理),機器仍可繼續進行運算。2.1.2非數值數據的表示非數值數據:文字和符號(字符)、圖像、聲音等非數值數據的表示:對其進行二進制編碼1、字符編碼2、漢字編碼1、字符編碼字符的表示:采用字符編碼,即用規定的二進制數表示文字和符號的方法。ASCII碼(AmericanStandardCodeForInformationInterchange):美國標準信息交換碼,為國際標準。常用的7位ASCII碼的每個字符都由7個二進制位b6~b0
表示,有128個編碼,最多可表示128種字符;其中包括:10個數字‘0’~‘9’:30H~39H,順序排列■26個小寫字母‘a’~‘z’:61H~7AH,順序排列■26個大寫字母‘A’~‘Z’:41H~5AH,順序排列■各種運算符號和標點符號等。ASCII碼編碼表0000010100111001011101110000NULDLESP0
P‵p0001SOHDC1!1AQaq0010STXDC2“2BRbr0011ETXDC3#3CScs0100EOTDC4¥4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB′7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,〈L、l|1101CRGS-=M]m}1110SORS.〉N^n~1111SIUS/?O_oDEL其中95個編碼,對應著計算機終端能敲入并且可以顯示的95個字符,打印機設備也能打印這95個字符,如大小寫各26個英文字母,0—9這10個數字符,通用的運算符和標點符號+,-,*,/,>,=,<等等。在計算機中,用1B(一個字節)表示一個ASCII碼,其最高一位(b7位)填0,余下的7b可以給出128個編碼,表示128個不同的字符和控制碼。另外的33個字符,其編碼值為0—31和127,則不對應任何一個可以顯示或打印的實際字符,它們被用作控制碼,控制計算機某些外圍設備的工作特性和某些計算機軟件的運行情況。2、漢字編碼對于漢字,計算機的處理技術必須解決三個問題:漢字輸入漢字儲存與交換漢字輸出它們分別對應著漢字輸入碼、內碼、字模碼的概念。因此,漢字編碼系統存在以下三種編碼:1、漢字輸入碼2、漢字內碼3、漢字字模碼(1)漢字輸入碼漢字輸入碼也稱外碼,是為了將漢字輸入計算機而編制的代碼,是代表某一漢字的一串鍵盤符號。漢字輸入碼種類:數字編碼:如區位碼、國標碼、電報碼等。拼音編碼:如全拼碼、雙拼碼、簡拼碼等。字形編碼:如王碼五筆、鄭碼、大眾碼等。音形編碼:如表形碼、智能ABC等。兩種典型的數字編碼:區位碼:是將國家標準局公布的6763個兩級漢字分為94個區,每個區分94位,實際上把漢字表示成二維數組,每個漢字在數組中的下標就是區位碼。例如“中”字位于54區48位,“中”字的區位碼即為“5448”。國標碼:將區位碼加2020H,占用兩個字節。例如“中”字的國標碼為區位碼5448的區碼和位碼轉化為16進制,為3630H,再加2020H得國標碼5650H。(1)漢字輸入碼(2)漢字機內碼漢字內碼是用于漢字信息的存儲、交換、檢索等操作的機內代碼,一般采用兩個字節表示。漢字可以通過不同的輸入法輸入,但其內碼在計算機中是唯一的。英文字符的機內代碼是7位的ASCII碼,當用一個字節表示時,最高位為“0”。為了與英文字符能相互區別,漢字機內代碼中兩個字節的最高位均規定為“1”。機內碼等于漢字國標碼加上8080H。例如“中”字的機內碼為D6D0H。(3)漢字字模碼漢字字模碼又稱漢字字形碼,它是將漢字字形經過點陣數字化后形成的一串二進制數,用于漢字的顯示和打印。根據漢字輸出的要求不同,點陣有以下幾種:簡易型漢字:16×16,32字節/漢字普通型漢字:24×24,72字節/漢字提高型漢字:32×32,128字節/漢字。漢字字庫:將所有漢字的字模點陣代碼按內碼順序集中起來,構成了漢字庫。漢字輸入碼漢字交換碼(國標碼)漢字輸入法程序漢字字模碼字形檢索程序漢字顯示漢字打印漢字內碼+8080H2.2定點加、減運算2.2.1定點補碼加、減法與溢出2.2.2基本的二進制加、減法器2.2.1定點補碼加、減法與溢出在計算機中,常將數值轉換成補碼后再進行加減運算。其優點是,可將減法運算轉化為加法運算,這樣可以簡化機器內部硬件電路的結構。補碼運算的特點是,符號位和數值位一起參加運算。補碼加減運算公式(1)補碼的加法運算其公式為:[x]補+[y]補=[x+y]補(2)補碼的減法運算其公式為:[x]
補
-[y]
補 =[x-y]
補
=[x+(-y)]
補
=[x]
補
+[-y]
補[x]補+[y]補=[x+y]補(mod2)(2-1)
(1)補碼加法的公式是現分4種情況來證明。假設采用定點小數表示,因此證明的先決條件是︱x︱﹤1,︱y︱﹤1,︱x+y︱﹤1。①x﹥0,y﹥0,則x+y﹥0。
相加兩數都是正數,故其和也一定是正數。正數的補碼和原碼是一樣的,可得:
[x]補+[y]補=x+y=[x+y]補
(mod2)②x﹥0,y﹤0,則x+y>0或x+y<0。相加的兩數一個為正,一個為負,因此相加結果有正、負兩種可能。根據補碼定義,
∵
[x]補=x,[y]補=2+y
∴[x]補+[y]補=x+2+y
=2+(x+y)當x+y>0時,2+(x+y)>2,進位2必丟失,又因(x+y)>0,故[x]補+[y]補=x+y=[x+y]補
(mod2)當x+y<0時,2+(x+y)<2,又因(x+y)<0,故
[x]補+[y]補=2+(x+y)
=[x+y]補
(mod2)③x<0,y>0,則x+y>0或x+y<0。這種情況和第2種情況一樣,把x和y的位置對調即得證。④x<0,y<0,則x+y<0。相加兩數都是負數,則其和也一定是負數。∵[x]補=2+x,[y]補=2+y∴[x]補+[y]補 =2+x+2+y
=2+(2+x+y)上式右邊分為”2”和(2+x+y)兩部分。由于(x+y)是負數,且其絕對值又小于1,那么(2+x+y)就一定是小于2而大于1的數,進位”2”必丟失。又因(x+y)<0,所以[x]補+[y]補=(2+x+y)
=
2+(x+y)
=[x+y]補(mod2)[x]補+[y]補=2+(2+x+y)[例]x=+0.1011,y=-0.0101,求x+y。[解:][x]補=0.1011,[y]補=1.1011[x]補0.1011+[y]補1.1011
[x+y]補10.0110
所以x+y=0.0110數用補碼表示時,減法運算的公式為[x-y]補=[x]補-[y]補=[x]補+[-y]補(2-2)只要證明[-y]補=-[y]補,上式即得證。
(2)補碼的減法運算證明
:∵[x+y]補=[x]補+[y]補
(mod2)∴[y]補=[x+y]補-[x]補
(2-3)∵[x-y]補=[x+(-y)]補
=[x]補+[-y]補∴[-y]補=[x-y]補-[x]補
(2-4)將式(2-3)與(2-4)相加,得
[-y]補+[y]補=[x+y]補+[x-y]補-[x]補-[x]
=[x+y+x-y]補-[x]補-[x]補=[x+x]補-[x]補-[x]補=0
故[-y]補=-[y]補(mod2)(2-5)
另一種證明方法:利用補碼加法公式,[0]補=0[y]補+
[-y]補=[y+(-y)]補
=[y
-y
]補 =[0
]補=0故[-y]補=-
[y]補
對于定點小數和定點整數都適用[-y]補的含義:是將[y]補的各位(包括符號位)全部取反,末位加“1”。從[y]補求[-y]補的法則是:
對[y]補各位(包括符號位)求反且最末位加1,即可得到[-y]補。寫成運算表達式,則為
[-y]補=﹁[y]補+2-n
其中:
符號﹁表示對[y]補作包括符號位在內的求反操作,2-n表示最末位的1。[例1]
已知x1=-0.1110,x2=+0.1101,
求:[x1]補,[-x1]補,[x2]補,[-x2]補。[解:]
[x1]補=1.0010
[-x1]補=﹁[x1]補+2-4
=0.1101+0.0001=0.1110
[x2]補=0.1101
[-x2]補=﹁[x2]補+2-4
=1.0010+0.0001=1.0011[例2]
x=+0.1101,y=+0.0110,求x-y。[解:][x]補=0.1101,[y]補=0.0110,[-y]補=1.1010[x]補0.1101+[-y]補1.1010
[x-y]補10.0111所以
x-y=+0.0111參加運算的數都用補碼表示。數據的符號與數據一樣參加運算。求差時將減數求補,用求和代替求差。運算結果為補碼。如果符號位為0,表明運算結果為正;如果符號位為1,則表明運算結果為負。符號位的進位為模值,應該丟掉。⑶加減法運算規則3.溢出判斷法機器定點小數表示在定點小數機器中,數的表示范圍為|x|<1。在運算過程中如出現大于1的現象,稱為“溢出”。在定點機中,正常情況下溢出是不允許的。[例]
x=+0.1011,y=+0.1001,求x+y。[解:]
[x]補=0.1011[y]補=0.1001
[x]補0.1011+[y]補0.1001[x+y]補1.0100兩個正數相加的結果成為負數,這顯然是錯誤的。[例]
x=-0.1101,y=-0.1011,求x+y。[解:][x]補=1.0011[y]補=1.0101
[x]補1.0011+[y]補1.0101[x+y]補0.1000兩個負數相加的結果成為正數,這同樣是錯誤的。之所以發生錯誤,是因為運算結果產生了溢出。兩個正數相加,結果大于機器所能表示的最大正數,稱為上溢。而兩個負數相加,結果小于機器所能表示的最小負數,稱為下溢。為了判斷“溢出”是否發生,可采用兩種檢測的方法。第一種方法是采用雙符號位法(變形補碼法,或“模4補碼”)。第二種方法是進位判斷法(單符號位法)
。(1)雙符號法(變形補碼法)用兩個相同的符號位Sf1Sf2表示一個數的符號。左邊第一位為第一符號位Sf1,相鄰的為第二符號位Sf2。
雙符號位的含義為:00表示正號;11表示負號;01表示產生正向溢出;10表示產生負向溢出。雙符號位可用邏輯異或來判斷溢出情況:V=Sf1⊕Sf2,此邏輯表達式可用異或門實現。若V=0,則無溢出;V=1,則有溢出。第一符號位永遠是結果的真正符號位。例1:已知x=0.1011,
y=0.0111,
求x+y=?解:[x]
補=00.1011,[y]
補=00.0111[x]
補=00.1011+[y]
補=00.0111[x+y]
補=01.0010
兩符號位為01,表示出現正向溢出。例2:已知x=-0.1011,
y=0.0111,
求x-y=?解:[x]
補=11.0101,[-y]
補=11.1001[x]
補=11.0101+[-y]
補=11.1001[x-y]
補=110.1110
已超出模值,丟掉兩符號位為10,表示出現負向溢出。⑵進位判斷法判斷規則:設Cn-1為最高數值位向符號位的進位值產生的進位,Cn為符號位產生的進位。當兩補碼進行加減運算(減法轉化為加法進行)時,如果兩個進位值Cn-1Cn相同,則沒有溢出發生如果兩個進位值不同,則有溢出發生。若Cn-1=1,
Cn
=0時,則發生正溢若Cn-1=0,
Cn
=1時,則發生負溢其判斷溢出表達式如下:V=Cn⊕Cn-1
,此邏式可用異或門實現例如:[x]
補=1.0101+[y]
補=1.1001[x+y]
補=10.1110
最高有效位沒有進位,即C=0,符號位有進位,即S=1,故V=1⊕0=1,有溢出發生。
[x]
補=1.1101+[y]
補=0.1001[x+y]
補=10.0110
最高有效位有進位,即C=1,符號位有進位,即S=1,故V=1⊕1=0,無溢出發生,x+y=+0.0110。返回2.2.2基本的二進制加法/減法器設字長為n位,兩個操作數分別為
x=x0.x1x2…
xn-1y=y0.y1y2…
yn-1
其中x0,y0為符號位。補碼運算的二進制加法/減法器(采用的變形補碼運算)的邏輯結構圖2-3演示∑0C∑0∑0∑0∑0∑0…=1x0y0=1x1y1=1x2y2=1xn-2=1yn-2xn-1yn-1S0S1S2Sn-2Sn-1C1C2C3Cn-2Cn-1CnP=0加P=1減C0=1V一位加法器2.3定點乘法運算
2.3.1原碼一位乘法
2.3.2補碼一位乘法
2.3.3原碼兩位乘法
2.3.4補碼兩位乘法2.3.1原碼一位乘法例:求A=0.1101B=0.1011兩數乘積
0.1101×0.10111101A×20不移位1101A×21左移1位0000A×22左移2位1101A×23左移3位0.100011111.人工計算乘法2.計算機實現乘法運算A·B=A·(0.1011)=0.1A+0.00A+0.001A+0.0001A=0.1A+0.00A+0.001(A+0.1A)=0.1A+0.01[0A+0.1(A+0.1A)]=0.1{A+0.1[0A+0.1(A+0.1A)]}=2-1{A+2-1[0A+2-1(A+2-1A)]}=2-1{A+2-1[0A+2-1(A+2-1(A+0)]}將乘法變成加法和右移的結合。3.原碼一位乘法的運算規則設x=xf.x1x2...xn
,y=yf.y1y2...yn
,乘積為P,乘積的符號位為Pf,則有
Pf=xf⊕yf
,|P|=|x|.|y|求|P|的運算規則為:(1)被乘數和乘數均取絕對值參加運算,符號位單獨考慮。(2)被乘數取雙符號,部分積的長度與被乘數的長度相同,初值為0。(3)從乘數的最低位的yn位開始對乘數進行判斷,若yn=1,則部分積加上被乘數|x|,然后右移一位;若yn=0,則部分積加上0,然后右移一位。(4)重復(3)判斷n次。例1x=-0.1101,y=-0.1011,求:[x×y]原=?解:|x|=00.1101(用雙符號表示)|y|=0.1011(用單符號表示)
部分積乘數yn
說明
00.00000.1011
+00.1101yn=1,加|x|00.110100.011010.101
右移一位得P1+00.1101yn=1,加|x|01.0011100.1001110.10
右移一位得P2+00.0000yn=0,加000.10011100.01001110.1
右移一位得P3+00.1101yn=1,加|x|01.000111100.100011110右移一位得P4P1P2P3P4由于Pf=xf⊕yf=1⊕1=0,|P|=|x|.|y|=0.10001111所以[x×y]原=0.10001111T部分積R0
R1乘積yyn計數器I移位信號SR2&被乘數xyn=1Pfxfyf&F
QRS結束
啟動+1原碼一位乘法硬件邏輯結構圖R0和R1都具有右移功能并且連通2.3.2補碼一位乘法補碼一位乘法方法:是在原碼一位乘法的基礎上發展起來的比較法,由英國Booth夫婦首先提出,故又稱為Booth乘法,它是現在廣泛采用的補碼乘法。2.3.2補碼一位乘法補碼一位乘法的運算規則符號位參與運算,運算的數均以補碼表示。被乘數一般取雙符號位參加運算,部分積初值為0。乘數可取單符號位,以決定最后一步是否需要校正,即是否要加[-x]補。乘數末位增設附加位yn+1,且初值為0。按表2-2所示進行操作。按照上述算法進行n+1步操作,但第n+1步不再移位,僅根據y0與y1的比較結果作相應的運算即可。補碼移位規則:部分積為正,右移時有效位最高位補0;為負時最高位補1。
yn(高位)yn+1(低位) 操作
00部分積右移一位
01部分積加x補,右移一位
10部分積加[-x]補,右移一位
11部分積右移一位乘數末位表2-2補碼一位乘法算法解:[x]補=11.0011,[-x]補=00.1101(用雙符號表示)[y]補=0.1011(用單符號表示)
部分積乘數ynyn+1
說明
00.00000.10110
+00.1101ynyn+1=10,加[-x]補
00.110100.011010.1011
右移一位得P100.0011010.101ynyn+1=11,右移一位得P2+11.0011ynyn+1=01,加[x]補
11.01100111.10110010.10
右移一位得P3+00.1101ynyn+1=10加[-x]補
00.100000100.010000010.1
右移一位得P4+11.0011ynyn+1=01,
加[x]補
11.01110001最后一步不移位即[x×y]補=1.01110001例2x=-0.1101,y=0.1011,求:[x×y]補=?ynyn+1T部分積R0
R1乘積yyn計數器I移位信號
SCI被乘數x&
QRS+1多路開關R2&10ynyn+1&+1yn+101反原結束啟動F2.3.3原碼兩位乘法為了提高乘法的執行速度,可以考慮每次對乘數的兩位進行判斷以確定相應的操作,這就是兩位乘法。原碼兩位乘法的運算規則為:
1)符號位不參加運算,最后的符號Pf=xf⊕yf
。
2)部分積與被乘數均采用三位符號,乘數末位增加一位C,其初值為0。
3)按表2.3所示的操作。
4)若尾數n為偶數,則乘數用雙符號,最后一步不移位。若尾數n為奇數,則乘數用單符號,最后一步移一位。表2-3原碼兩位乘法算法
yn-1yn
C
操作
000
加0,右移兩位,0→C001加x,
右移兩位,0→C
010加x,
右移兩位,0→C011加2x,
右移兩位,0→C100加2x,
右移兩位,0→C
101減x,
右移兩位,1→C110減x,
右移兩位,1→C111加0,右移兩位,1→C解:|x|=000.11012|x|=001.1010(用三符號表示)|y|=00.0110(用雙符號表示)
部分積乘數C說明
000.000000.01100
+001.1010yn-1ynC=100,加2|x|001.1010000.01101000.011
右移兩位0→C+001.1010yn-1ynC=011,加2|x|010.000010000.1000001000.0
右移兩位0→C
yn-1ynC=000,最后一步不移位故[x×y]原=0.10000010例3x=-0.1101,y=0.0110,求[x×y]原=?2.3.4補碼兩位乘法運算規則:(1)符號位參加運算,兩數均用補碼表示。(2)部分積與被乘數均采用三位符號表示,乘數末位增加一位yn+1,其初值為0。(3)按表2-4所示的操作。(4)若尾數n為偶數,則乘數用雙符號,最后一步不移位。若尾數n為奇數,則乘數用單符號,最后一步移一位。表2-4補碼兩位乘法算法
yn-1yn
yn+1
操作
000
加0,右移兩位
001加[x]補,
右移兩位
010加
[x]補,
右移兩位
011加2[x]補,
右移兩位
100加2[-x]補
,
右移兩位
101加[-x]補
,
右移兩位
110加[-x]補
,
右移兩位
111加0,右移兩位解:[x]補=111.1101,2[-x]補=001.1010,2[x]補=110.0110(用三符號表示)[y]補=00.0110(用雙符號表示)例4x=-0.1101,y=0.0110,求[x×y]補=?部分積乘數yn+1
說明
000.000000.01100
+001.1010yn-1ynyn+1=100,加2[-x]補
001.1010000.01101000.011
右移兩位
+110.0110 yn-1ynyn+1y=011,加2[x]補
110.110010111.1011001000.0
右移兩位
yn-1ynyn+1y=000,最后一步不移位故[x×y]補=1.101100102.4定點除法運算2.4.1原碼一位除法2.4.2補碼一位除法2.4.1原碼一位除法設被除數[x]原=xf.x1x2...xn
,除數[y]原=yf.y1y2...yn
,則商的符號:Qf=xf⊕yf商的數值:|Q|=|x|/|y|兩個用原碼表示的數相除時,商的符號通過兩個數的符號異或求得,而商的數值部分通過兩個數的數值部分按正數求商得到。設被除數x=0.1001,除數y=0.1011,模仿十進制除法運算。2-1y2-2y2-3y2-4y1.判斷x是否小于y?現在x<y,故商的整數位商“0”,x的低位補0,得余數r0。2.比較r0和2-1y,因r0>2-1y,表示夠減,小數點后第一位商“1”,作r0-2-1y,得余數r1。3.比較r1和2-2y,因r1>2-2y,表示夠減,小數點后第二位商“1”,作r1-2-2y,得余數r2。4.比較r2和2-3y,因r2<2-3y,不夠減,小數點后第三位商“0”,不作減法,得余數r3(=r2)。5.比較r3和2-4y,因r3>2-4y,表示夠減,小數點后第四2位商“1”,作r3-2-4y,得余數r4,共求四位商,至此除法完畢。上面的筆算過程可敘述如下:手工除法算法X=+0.1011,Y=-0.1101X÷Y改進手工算法即可適合機器運算:計算機通過做減法測試來實現判斷:結果大于等于0,表明夠減,商1;結果小于0,表明不夠減,商0。計算機將余數左移一位,再直接與不右移的除數相減。恢復余數法:先作減法,若余數為正,夠減;若余數為負,不夠減。不夠減時必須恢復原來的余數,以便再繼續往下運算。加減交替法:運算過程中出現不夠減,則不必恢復余數,根據余數符號,可以繼續往下運算。求|Q|的加減交替法(不恢復余數法)運算規則為:(1)符號位不參加運算,并要求|x|<|y|
(2)先用被除數減去除數,當余數為正時,商上1,余數左移一位,再減去除數。當余數為負時,商上0,余數左移一位,再加上除數。(3)當第n+1步余數為負時,需加上|y|得到第n+1步正確的余數。最后余數為rn×2-n(余數與被除數同號)。原碼不恢復余數法算法流程圖如圖2-8所示。解:|x|=00.1001,|y|=00.1011[-|y|]補=11.0101
被除數x/余數r商數q說明
00.1001+[-|y|]補
11.0101減去除數
11.11100余數為負,商上011.11000r和q左移一位
+[|y|]補
00.1011加上除數
00.01110.1余數為正,商上100.11100.1r和q左移一位
+[-|y|]補
11.0101減去除數
00.00110.11余數為正,商上100.01100.11r和q左移一位
+[-|y|]補
11.0101減去除數
11.10110.110余數為負,商上011.01100.110r和q左移一位
+[|y|]補
00.1011加上除數
00.00010.1101余數為正,商上1例1x=-0.1001,y=-0.1011,求[x/y]原=?
Qf=xf+yf=1+1=0,[x/y]原=0.1101,余數[r]原=1.0001×2-4(余數與被除數同號)。2.4.2補碼一位除法符號位參加運算,除數與被除數均用雙符號補碼表示。被除數與除數同號時,被除數減去除數。被除數與除數異號時,被除數加上除數。商符號位的取值見第③步。余數與除數同號時,商上1,余數左移一位減去除數;余數與除數異號時,商上0,余數左移一位加上除數。注意:余數左移加上或減去除數后就得到了新余數。
采用校正法包括符號位在內,應重復規則③(n+1)次。
1.補碼不恢復余數法的算法規則(比較上商)如下:補碼一位除法運算規則由比較上商規則、商的校正規則和余數校正規則組成。商的校正原則:①當剛好能除盡(即運算過程其中任一步余數為0)
時,如果除數為正,則商不必校正;若除數為負,則商需要校正,即加2-n進行修正。②當不能除盡時,如果商為正,則不必校正;若商為負,則商需要加2-n進行修正。求得n位商后,得到的余數往往是不正確的。正確的余數常需要根據具體情況作適當的處理才能獲得,處理方法一般如下:余數的處理①若商為正,則當余數與被除數異號時,應將余數加上除數進行修正才能獲得正確的余數。②若商為負,則當余數與被除數異號時,余數需要減去除數進行校正。余數之所以需校正,是因為在補碼不恢復余數除法運算過程中先比較后上商的緣故。可見,如果要保存余數必須根據具體情況對余數作相應處理,否則余數不一定正確。例3x=0.1001,y=-0.1001,求[x/y]補=?解:[x]補=0.1001,[y]補=11.0111,[-y]補=00.1001(用雙符號表示)
被除數x/余數r商數q說明
00.1001+[y]補11.0111x和y異號,x補+y補
00.00000余數與y異號,商上000.00000r和q左移一位
+[y]補11.0111加上除數
11.01110.1余數與y同號,商上110.11100.1r和q左移一位
+[-y]補
00.1001減去除數
11.01110.11余數與y同號,商上110.11100.11r和q左移一位
+[-y]補
00.1001減去除數
11.01110.111余數與y同號,商上110.11100.111r和q左移一位
+[-y]補00.1001減去除數
11.01110.1111余數與y同號,商上1中間有一步余數為零表示能除盡,除數為負,需校正,
[x/y]補=1.1111+0.0001=1.0000
余數與被除數異號,需校正,余數[r]補=(11.0111+
00.1001)×2-4
=0.0000×2-4。例4x=-0.1001,y=0.1011,求[x/y]補=?解:[x]補=11.0111[y]補=00.1011,[-y]補=11.0101(用雙符號表示)
被除數x/余數r商數q說明
11.0111+[y]補00.1011x和y異號,[x]補+[y]補
00.00101余數與y同號,商上100.01001r和q左移一位
+[-y]補
11.0101減去除數
11.10011.0余數與y異號,商上011.00101.0r和q左移一位
+[y]補00.1011加上除數
11.11011.00余數與y異號,商上011.10101.00r和q左移一位
+[y]補
00.1011加上除數
00.01011.001余數與y同號,商上100.10101.001r和q左移一位
+[-y]補
11.0101減去除數
11.11111.0010余數與y異號,商上0不能除盡,商為負,需校正,
[x/y]補=1.0010+0.0001=1.0011
余數與被除數同號不需校正,余數[r]補=1.1111×2-4(余數與被除數同號)。2.5定點運算器的組成與結構
ALU(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年西安市灞橋區街道辦人員招聘筆試參考題庫及答案詳解
- 2026年淮安市淮陰區街道辦人員招聘筆試備考題庫及答案詳解
- 2026年承德市雙灤區街道辦人員招聘筆試備考題庫及答案詳解
- 2026年廣東省深圳市中小學教師招聘筆試參考試題及答案詳解
- 2026年綏化市北林區法檢系統書記員招聘考試參考題庫及答案詳解
- 2026年浙江省臺州市中小學教師招聘考試參考題庫及答案詳解
- 2026年北京市法檢系統書記員招聘考試參考試題及答案詳解
- 2026年臨滄地區臨翔區中小學教師招聘筆試備考試題及答案詳解
- 跨境電算協同中算力負載跨國綠電碳足跡動態標簽顯示-基于國際產品碳足跡動態標簽標準與算力負載綠電碳足跡顯示規則規范分析
- 3.《走遍天下書為侶》
- 2026廣西交投集團招聘第三季度招聘188人易考易錯模擬試題(共500題)試卷后附參考答案
- 人工智能教學設計案例高中政治哲學
- 長江船舶經濟航速的多維度探究與優化策略
- 沉井基礎工程施工應急處理保證措施
- 2026年建德市新安旅游投資有限公司招聘筆試題庫
- 筆墨千秋:中國傳統繪畫的文化脈絡與藝術精神
- AQ3067-2026《化工和危險化學品生產經營企業重大生產安全事故隱患判定準則》培訓
- 律所內部報銷制度
- 2025-2026學年北師大版七年級數學上冊期末綜合檢測練習卷
- 2025年東航技術招聘筆試歷年典型考點題庫附帶答案詳解
- NIID生物標志物研究進展
評論
0/150
提交評論