第二章數據的表示、運算與校驗_第1頁
第二章數據的表示、運算與校驗_第2頁
第二章數據的表示、運算與校驗_第3頁
第二章數據的表示、運算與校驗_第4頁
第二章數據的表示、運算與校驗_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第二章第二章 數據的表示、運算與校驗數據的表示、運算與校驗2.1數值型數值型數據的表示數據的表示方法方法2.1.1進位計數制進位計數制數碼:用不同的數字符號來表示一種數制的數值,這些數字符號數碼:用不同的數字符號來表示一種數制的數值,這些數字符號稱為數碼。稱為數碼?;簲抵扑褂玫臄荡a的個數。基:數制所使用的數碼的個數。權:某數制各位所具有的值。(相鄰兩位權值之比等于基數)權:某數制各位所具有的值。(相鄰兩位權值之比等于基數)1.計算機中常用的進位制計算機中常用的進位制1)二進制)二進制每個數位僅允許取每個數位僅允許取0或或1兩種值,逢兩種值,逢2進位,借進位,借1當當2,基數為,基數為2。2

2、)八進制)八進制所使用的數碼是所使用的數碼是8個:個:0,1.7,逢逢8進位,借進位,借1當當8,基數為,基數為8,各,各位的權是以位的權是以8為底的冪。為底的冪。3)十六進制)十六進制基為基為16,所用數碼為,所用數碼為0-9,A-F,共共16個,逢個,逢16進位,借進位,借1當當16,各,各位的權是以位的權是以16為底的冪。為底的冪。4)十進制)十進制5)二)二十十進制進制為了解決二進制和十進制之間的轉換問題,引入了二為了解決二進制和十進制之間的轉換問題,引入了二十十進制,即進制,即用四位二進制數表示一位十進制數。用四位二進制數表示一位十進制數。對二對二十十進制的運算可先按二進制數運算,如

3、果每位和進制的運算可先按二進制數運算,如果每位和 9,不必修,不必修正;如果和正;如果和 9,則作,則作 “加六修正加六修正”。2.各種進位制之間的相互轉換各種進位制之間的相互轉換1)十進制整數轉換位二進制整數)十進制整數轉換位二進制整數減權定位法減權定位法若轉換后的二進制代碼序列為若轉換后的二進制代碼序列為XnXn-1X1X0,則從高位起將十則從高位起將十進制數依次與二進制數各位的權值進行比較。若夠減,則對進制數依次與二進制數各位的權值進行比較。若夠減,則對應位應位Xi=1,減去該位權值后繼續(xù)往下比較;若不夠減,則對應減去該位權值后繼續(xù)往下比較;若不夠減,則對應位位Xi=0,越過該位后繼續(xù)往

4、下比較;如此反復進行,直到所有越過該位后繼續(xù)往下比較;如此反復進行,直到所有二進制位的位權都比較完畢為止。二進制位的位權都比較完畢為止。(116)10=(1110100)2除基取余除基取余將十進制整數除以將十進制整數除以2,所得余數作為對應的二進制數低位的值;,所得余數作為對應的二進制數低位的值;繼續(xù)對商除以繼續(xù)對商除以2,所得的各次余數就是二進制數的各位值;如,所得的各次余數就是二進制數的各位值;如此進行直到商等于此進行直到商等于0為止。為止。2)十進制小數轉換為二進制小數)十進制小數轉換為二進制小數減權定位法減權定位法(0.635)10=(0.101)2乘基取整乘基取整將待轉換的二進制小數

5、乘以基數將待轉換的二進制小數乘以基數2,所得的整數部分就是二進,所得的整數部分就是二進制小數的高位值;繼續(xù)對所余小數部分乘以基數制小數的高位值;繼續(xù)對所余小數部分乘以基數2,所得的整,所得的整數部分就是次高位的值,如此繼續(xù),直到乘積的小數部分已為數部分就是次高位的值,如此繼續(xù),直到乘積的小數部分已為0,或以滿足所需精度要求為止。,或以滿足所需精度要求為止。3)二進制整數轉換位十進制整數)二進制整數轉換位十進制整數按權相加按權相加(1011)2=(11)10逐次乘基相加法逐次乘基相加法從二進制的最高位開始,乘以基數從二進制的最高位開始,乘以基數2,然后與次高位,也就,然后與次高位,也就是相鄰低位

6、相加;所的結果再乘以基數是相鄰低位相加;所的結果再乘以基數2,再與相鄰低位相,再與相鄰低位相加;如此繼續(xù),直到加上最低位為止。加;如此繼續(xù),直到加上最低位為止。4)二進制小數轉換位十進制小數)二進制小數轉換位十進制小數按權相加按權相加(0.1011)2=(0.6875)10逐次除基相加逐次除基相加從二進制的最低位開始,除以基數從二進制的最低位開始,除以基數2之后與次低位(也就是之后與次低位(也就是相鄰高位)相加,所的結果再除以基數相鄰高位)相加,所的結果再除以基數2,繼續(xù)與相鄰高位,繼續(xù)與相鄰高位位相加,再除以位相加,再除以2;如此繼續(xù),直到與小數點后的第一位相;如此繼續(xù),直到與小數點后的第一

7、位相加并除以加并除以2為止。為止。2.1.2帶符號數的表示帶符號數的表示真值:用正負號加絕對值表示的數值。真值:用正負號加絕對值表示的數值。機器數:在計算機內部,連同數符一起數碼化了的數。機器數:在計算機內部,連同數符一起數碼化了的數。1.原碼表示法原碼表示法讓數碼序列的最高位為符號位,符號位為讓數碼序列的最高位為符號位,符號位為0表示該數為正,為表示該數為正,為1表示該數為負。定義如下:表示該數為負。定義如下:1)定點小數的原碼序列為定點小數的原碼序列為X0.X1X2XnX原=X 0 X 11-X=1+|X| -1X0計數制計數制符號數字化符號數字化編碼編碼2)定點整數的原碼序列為定點整數的

8、原碼序列為XnXn-1 X1X03)結論:結論:真值真值0有有+0和和-0之分。之分。對于小數原碼,表示范圍對于小數原碼,表示范圍-1 X 1對于整數原碼,表示范圍對于整數原碼,表示范圍- 2n X 2n符號位不是數值的一部分,是人為地約定符號位不是數值的一部分,是人為地約定“0正正1負負”X原=X 0 X 2n2n-X=2n+|X| - 2n X02.補碼表示法補碼表示法1)補碼定義)補碼定義統(tǒng)一定義為:統(tǒng)一定義為: X補補=M+X (mod M)正數模舍去,負數模減去真值的絕對值。正數模舍去,負數模減去真值的絕對值。定點小數補碼序列為定點小數補碼序列為X0.X1X2Xn ,則定義為:則定義

9、為:X補=X 0 X 12+X=2-|X| -1 X 0例例: x= -0.1011 x補補=10+x=10.0000-0.1011=1.0101y=-0.01111y補補=10+y=10.00000-0.01111=1.10001定點整數序列定點整數序列XnXn-1 X1X0 ,則定義為:則定義為:X補=X 0 X 2n2n+1+X=2n+1-|X| - 2n X 02)由真值、原碼轉換為補碼)由真值、原碼轉換為補碼正數補碼表示與原碼相同正數補碼表示與原碼相同負數原碼轉換為補碼方法有二:負數原碼轉換為補碼方法有二:#“變反加變反加1”符號位保持為符號位保持為1不變,其余各位先變反,然后在末位

10、不變,其余各位先變反,然后在末位加加1。#符號位保持為符號位保持為1不變,尾數部分自低位向高位,第一個不變,尾數部分自低位向高位,第一個1及其以前及其以前的各低位的各低位0都保持不變,以后的各位則按位變反。都保持不變,以后的各位則按位變反。例:若例:若X=0.1011,則則8位字長的位字長的X補補=0.1011000若若X= -0.1011,則則8位字長的位字長的X補補=1.0101000若若X=1011,則則8位字長的位字長的X補補=00001011若若X= -1011,則則8位字長的位字長的X補補=111101013)由補碼表示轉換為原碼與真值)由補碼表示轉換為原碼與真值對于正數:對于正數

11、: X原原= X補補對于負數:對于負數:X原原= X補補補補4)已知)已知X補補求求-X補補對于對于X補補連同符號位一起各位變反末尾加連同符號位一起各位變反末尾加15)算術移位,左移可由)算術移位,左移可由X補補求求2X補補、 4X補補;右移可由;右移可由X補補求求 X補補/2 、 X補補/46)變相補碼變相補碼(雙符號補碼雙符號補碼)為了防止溢出而設定為了防止溢出而設定(3 3)移位規(guī)則)移位規(guī)則(1)單符號位)單符號位 : 0 01110 1110 (2)雙符號位:)雙符號位:00 1110 00 0111正數補碼和原碼的移位規(guī)則正數補碼和原碼的移位規(guī)則左移左移右移右移右移右移0 0111

12、 0 0011 左移左移左移左移右移右移右移右移01 1100 00 1110 00 0111 數符不變數符不變(單:符號位不變;雙:第一符號(單:符號位不變;雙:第一符號位不變)。位不變)??瘴谎a空位補0(右移時第二符號位移至尾數最高位)。(右移時第二符號位移至尾數最高位)。(3 3)移位規(guī)則)移位規(guī)則(1)單符號位)單符號位 : 1 10111 0110 (2)雙符號位:)雙符號位:10 1100 11 0110負數補碼移位規(guī)則負數補碼移位規(guī)則左移左移右移右移右移右移1 1011 1 1101 左移左移右移右移右移右移11 0110 11 1011 數符不變數符不變(單:符號位不變;雙:第

13、一符號(單:符號位不變;雙:第一符號位不變)。位不變)。左移空位補左移空位補0(第二符號位移至尾數最高位)。(第二符號位移至尾數最高位)。右移空位補右移空位補16)討論:)討論: 補碼最高位作為符號位,補碼最高位作為符號位,“0正正1負負”,但補碼的符號位是,但補碼的符號位是數值的一部分。數值的一部分。 補碼表示中,數值補碼表示中,數值0只有一種表示。只有一種表示。 負數補碼的表示范圍比原碼稍寬一些,即多一種組合。負數補碼的表示范圍比原碼稍寬一些,即多一種組合。 補碼可實現化減為加。補碼可實現化減為加。3.反碼表示法反碼表示法正數的反碼表示與原碼相同;負數反碼的符號位為正數的反碼表示與原碼相同

14、;負數反碼的符號位為1,尾數由,尾數由原碼尾數逐位變反。原碼尾數逐位變反。定點小數反碼序列為定點小數反碼序列為X0.X1X2Xn ,則定義為:則定義為:定點整數的反碼序列定點整數的反碼序列XnXn-1 X1X0 ,則定義為則定義為X反=X 0 X 1(2-2-n)+X -1 X 0X反=X 0 X 2n(2n+1-1)+X - 2n X 04.移碼(增碼)移碼(增碼)設定點整數移碼序列為設定點整數移碼序列為Xm X2X1X0,則定義為:則定義為: x移移=2m+X -2m X 2m結論:結論:最高位為符號位,最高位為符號位,1正正0負負零的移碼是唯一的零的移碼是唯一的1000000,除符號位外

15、,移碼各位與補碼同除符號位外,移碼各位與補碼同用移碼表示便于比較數的大小,移碼大真值就大,移碼小真值用移碼表示便于比較數的大小,移碼大真值就大,移碼小真值就小。就小。將十進制真值將十進制真值(127,1,0,1,127)列列表表示成二進制數及原碼、反碼、補碼、表表示成二進制數及原碼、反碼、補碼、移碼值。移碼值。2.1.3數的定點表示與浮點表示數的定點表示與浮點表示1.定點表示法定點表示法在計算機中小數點的位置固定不變的數叫做定點數。在計算機中小數點的位置固定不變的數叫做定點數。1)無符號定點整數)無符號定點整數略去符號位的正整數,小數點位于最低位之后,實際是不存在略去符號位的正整數,小數點位于

16、最低位之后,實際是不存在的。的。若無符號定點整數的代碼序列為若無符號定點整數的代碼序列為XnXn- 1 X1X0,則有則有 :最大整數最大整數 2n+1-1 111.11最小非零正數最小非零正數 1 00001表示范圍表示范圍0- 2n+1-1 ;分辨率分辨率12)帶符號定點整數)帶符號定點整數原碼定點整數表示范圍:原碼定點整數表示范圍: -(2n-1 ) (2n-1 )補碼定點整數表示范圍:補碼定點整數表示范圍: -2n (2n-1 )分辨率均為分辨率均為13)帶符號定點小數)帶符號定點小數原碼定點小數表示范圍:原碼定點小數表示范圍: -( 1 2-n ) ( 1 2-n )補碼定點小數表示

17、范圍:補碼定點小數表示范圍: -1 ( 1 2-n)分辨率均為:分辨率均為: 2-n以定點整數為例以定點整數為例,用數軸形式說明原碼、反碼、用數軸形式說明原碼、反碼、補碼表示范圍和可能的數碼組合情況。補碼表示范圍和可能的數碼組合情況。 設機器字長設機器字長16位位,定點表示定點表示,尾數尾數15位位,數符數符1位位,問:問:(1)定點原碼整數表示時定點原碼整數表示時,最大正數是多少最大正數是多少?最小最小負數是多少負數是多少?(2)定點原碼小數表示時定點原碼小數表示時,最大正數最大正數是多少是多少?最小負數是多少最小負數是多少?(1)定點原碼整數表示最大正數值(2151)10(32767)10

18、最小負數值(2151)10(32767)10(2)定點原碼小數表示 最大正數值(1215)10(0.111.11)2最小負數值(1215)10(0.111.11)2關于比例因子的設置。關于比例因子的設置。(1.1100+1.1000)2.浮點表示法浮點表示法1)浮點數的格式)浮點數的格式N=REMN為真值,為真值,RE為比例因子,為比例因子,M為尾數為尾數MnM2M1MfEmE2E1Ef階碼E階符數符尾數ME為正,尾數為正,尾數M擴大若干倍,擴大若干倍,E為負,尾數為負,尾數M縮小若干倍;縮小若干倍;R是是階碼的底,與尾數的基相同。階碼的底,與尾數的基相同。階碼二進制位數決定浮點數的表示范圍,

19、尾數二進制位數階碼二進制位數決定浮點數的表示范圍,尾數二進制位數決定決定浮點數的精度浮點數的精度 為了充分利用尾數部分的有效位數,一般采取規(guī)格化的約定,為了充分利用尾數部分的有效位數,一般采取規(guī)格化的約定,當當R=2時,規(guī)格化的含義是滿足條件時,規(guī)格化的含義是滿足條件1/2 |M| 1。對于正數和對于正數和原碼表示的負數,規(guī)格化的特征是原碼表示的負數,規(guī)格化的特征是M1=1;對于用補碼表示的對于用補碼表示的負數,除負數,除-1/2這個特例這個特例(1.10000)外,規(guī)格化的特征外,規(guī)格化的特征M1=0。若浮點數的格式如下,階碼部分若浮點數的格式如下,階碼部分m+1位,位,含一位階符,補碼表示

20、,以含一位階符,補碼表示,以2為底;尾數為底;尾數部分部分n+1位,含一位數符,補碼表示規(guī)格位,含一位數符,補碼表示規(guī)格化,求其典型值化,求其典型值(最小的正數、負數,最最小的正數、負數,最大的正數和、負數大的正數和、負數)。MnM2M1MfEmE2E1Ef階碼E階符數符尾數M2.2 2.2 定點加法、減法運算定點加法、減法運算2.2.12.2.1補碼加減法補碼加減法n用補碼表示的數進行加減運算,符號位直接用補碼表示的數進行加減運算,符號位直接參加運算。參加運算。n簡化了加減運算方法,化簡化了加減運算方法,化“減減”為為“加加”,實現硬件簡單。實現硬件簡單。1. 基本關系式基本關系式 ( X

21、+ Y )補補 = X補補 + Y補補 (1) ( X - Y )補補 = X補補 + (-Y)補補 (2)式(式(1):):操作碼為操作碼為“加加”時,兩數直接相加。時,兩數直接相加。3) X= 3 Y= 2 X補補=0 0011 Y補補=1 11100 0001(+1補碼)補碼)2) X= 3 Y= 2 X補補=1 1101 Y補補=1 11101 1011 ( 5補碼)補碼)1) X=3 Y=2 X補補=0 0011 Y補補=0 00100 0101(+5補碼)補碼)4) X= 3 Y= 2 X補補=1 1101 Y補補=0 00101 1111 (1補碼)補碼)例例. 求求(X+Y)補

22、補 ( X - Y )補補 = X補補 + (-Y)補補 (2)式(式(2):):操作碼為操作碼為“減減”時,將減轉換為加。時,將減轉換為加。 1) X= 4 Y= 5 X補補=0 0100 Y補補=1 1011(-Y)補補=0 01010 1001(+9補碼)補碼)2) X= 4 Y= 5 X補補=1 1100 Y補補=0 0101(-Y)補補=1 10111 0111 (9補碼)補碼)例例. 求求(X Y)補補Y補補 (Y)補補:將將Y Y補補變補變補不管不管Y Y補補為正或負,將其符號連同為正或負,將其符號連同尾數一起各位變反,末位加尾數一起各位變反,末位加1 1。即將減數變補后與被減數

23、相加。即將減數變補后與被減數相加。 X補補=0 0100 Y補補=1 1011 X補補=1 1100 Y補補=0 0101注意:某數的注意:某數的補碼表示補碼表示與某數與某數變補變補的區(qū)別。的區(qū)別。例例. 1 0101. 1 0101原原 1 1011 1 1011補碼表示補碼表示1 00111 0011補補 0 1101 0 1101變補變補例例. . 1 1 0101 0101原原 1 1 1011 1011 0 0101 0 0101原原 0 0101 0 0101補碼表示補碼表示符號位不變;符號位不變; 0 0 0101 0101原原 0 0 0101 0101 1 01011 010

24、1原原 1 1 10111011 0 01010 0101原原 0 01010 0101負數尾數改變,負數尾數改變,正數尾數不變。正數尾數不變。0 00110 0011補補 1 1101 1 11011 1 0011 0011補補 0 0 1101 11010 0 0011 0011補補 1 1 1101 11011 00111 0011補補 0 11010 11010 00110 0011補補 1 11011 1101變補變補符號位改變,符號位改變,尾數改變。尾數改變。補碼的機器負數補碼的機器負數2. 算法流程算法流程操作數用補碼表示,符操作數用補碼表示,符號位參加運算號位參加運算結果為補碼

25、表示,符號結果為補碼表示,符號位指示結果正負位指示結果正負X補補+Y補補X補補+(-Y)補補ADDSUB2.2.2 溢出判斷溢出判斷一、溢出判別一、溢出判別在什么情況下可能產生溢出?在什么情況下可能產生溢出?兩正數加,變負數,上溢(大于機器所能表示的最大數)兩正數加,變負數,上溢(大于機器所能表示的最大數)兩負數加,變正數,下溢(小于機器所能表示的最小數)兩負數加,變正數,下溢(小于機器所能表示的最小數)例例. .數數A A有有4 4位尾數,位尾數,1 1位符號位符號SASA 數數B B有有4 4位尾數,位尾數,1 1位符號位符號SB SB 符號位參加運算符號位參加運算 如何判斷運算結果產生了

26、溢出?如何判斷運算結果產生了溢出?判斷溢出將使用到的信息:判斷溢出將使用到的信息:操作數的符號位操作數的符號位S SA A和和S SB B結果符號結果符號SfSf符號位進位符號位進位CfCf尾數最高位進位尾數最高位進位C C正確正確0 00110 0010(1)A=3 B=2 3+2:0 0101 (2)A=10 B=7 10+7: 0 10100 01111 0001 正溢正溢正確正確負溢負溢正確正確正確正確(3)A= -3 B= -2-3+(-2):1 1011 1 11011 1110(4)A= -10 B= -7 -10+(-7):0 1111 1 01101 1001(5)A=6 B

27、= -4 6+(-4):0 0010 0 01101 1100(6)A= -6 B=4 -6+4:1 1110 1 10100 0100(2)A=10 B=7 10+7 :0 1010 0 01111 0001 (4)A= -10 B= -7 -10+(-7):0 1111 1 01101 10011. 硬件判斷邏輯一(硬件判斷邏輯一(SA、SB與與Sf的關系)的關系)溢出溢出= = S SA AS SB BS Sf fS SA AS Sf fS SB B溢出溢出= = C Cf f C C溢出溢出= = S Sf1f1 S Sf2f22. 硬件判斷邏輯二(硬件判斷邏輯二(Cf與與C的關系)的

28、關系)3. 硬件判斷邏輯三(雙符號位硬件判斷邏輯三(雙符號位)二、二、 舍入方法舍入方法1. 0舍舍1入(原碼、補碼)入(原碼、補碼)0 00100原原 1 00101原原 1 11011補補 2. 末位恒置末位恒置1(原碼、補碼)(原碼、補碼)0 00100原原 1 11011補補 1 00101原原 0 0010原原 1 0011原原 1 1110補補 0 0011原原 1 0011原原 1 1101補補 1 0011原原 1 1101補補 例例. 保留保留4位尾數:位尾數: 例例. 保留保留4位尾數:位尾數: 三、三、 移位操作移位操作1. 移位類型移位類型邏輯移位:數碼位置變化,數值邏

29、輯移位:數碼位置變化,數值不變不變。算術移位算術移位 1 0 0 0 1 1 1 1循環(huán)左移:循環(huán)左移:0 :數碼位置變化,數值:數碼位置變化,數值變化變化,符號位不變。符號位不變。1 0 0 1 1 1 1 算術左移算術左移:1 0 0 1 1 1 1 10 1 1 1 1 0 (-15)(-30) 移位寄存器:移位寄存器:2. 移位邏輯移位邏輯在寄存器中移位在寄存器中移位(串行接串行接口中口中)D4 D3 D2 D1D4 D3 D2 右移右移左移左移 D3 D2 D1 移位門:移位門: 斜位傳送(運算器中)。斜位傳送(運算器中)。左斜左斜 右斜右斜 4 3 1 2門門4 門門3 門門2 門

30、門1移位寄存器移位寄存器移位門移位門加法器加法器2.2.3定點乘法運算定點乘法運算一、一、 原碼一位乘法原碼一位乘法 每次用一位乘數去乘被乘數。每次用一位乘數去乘被乘數。 1.1.算法分析算法分析乘法乘法 部分積累加、移位。部分積累加、移位。例例. 0.11011.10111.1011乘積乘積 P = X P = X Y Y積符積符 S SP P= S= SX X S SY YX原原Y原原每次將一位乘數所對應的部分積與原部每次將一位乘數所對應的部分積與原部分積的累加和相加,并移位。分積的累加和相加,并移位。設置寄存器:設置寄存器: A A:存放存放部分積累加和部分積累加和, ,最后為最后為乘積

31、高乘積高4 4位位 B B:存放存放被乘數被乘數 C C:存放存放乘數乘數、最后為、最后為乘積低乘積低4 4位位 設置初值:設置初值: A = 00.0000A = 00.0000 B = X = 00.1101 B = X = 00.1101 C = Y = .1011 C = Y = .1011 步數步數 條件條件 操作操作 A C A C 00.0000 .101 00.0000 .1011 1 1 1)C Cn n=1=1+ +B BC Cn n+ 00.1101+ 00.110100.00.11011101 0.1101 0.1101 0.1010.1011 1 1101 1101

32、1101 1101 0000 0000 1101 1101 0.10001111 0.10001111BC 1101 1101 00.00.011001101 1.10.101 1 0.1101 0.1101 0.100.101 11 12 2)C Cn n=1=1+ +B B+ 00.1101+ 00.11010 01 1. .0011001100.00.100110011111.1.10 0 0.1101 0.1101 0.10.10 01111 0.1101 0.1101 0.10110.1011 1101 1101 1101 1101 0000 0000 1101 1101 0.100

33、01111 0.10001111BC3 3)C Cn n=0=0+0+0+ 00.0000+ 00.000000.00.1001100100.00.01000100111111. .1 14 4)C Cn n=1=1+ +B B+ 00.1101+ 00.11010 01 1. .0001000100.00.1000100011111111X X原原Y Y原原 = 1.10001111= 1.10001111 2. .算法流程算法流程0 0 A A、X BX B、Y CY C、0 CR0 CRC Cn n = 1 = 1 ?CR = n CR = n ?1/21/2(A+BA+B) A A,C

34、 C1/21/2(A+0A+0) A A,C C CR + 1 CRCR + 1 CRYYNN Sx + Sy SSx + Sy SA A 3.3.運算規(guī)則運算規(guī)則(1)(1)操作數和結果用原碼表示;操作數和結果用原碼表示;(2)(2)絕對值運算,符號單獨處理;絕對值運算,符號單獨處理;(3)(3)被乘數被乘數( (B)B)、累加和累加和( (A)A)取雙符號位;取雙符號位;( (4 4) )乘數末位乘數末位C Cn n為判斷位為判斷位, ,其其值值決定下步操作;決定下步操作;(5)(5)若若Cn=1,Cn=1,則部分積加則部分積加B B,并右移一位;并右移一位; 若若Cn=0,Cn=0,則部

35、分積加則部分積加0 0,并右移一位;,并右移一位; ( (6 6) )作作n n次循環(huán)(累加、右移)。次循環(huán)(累加、右移)。二、二、 補碼一位乘法補碼一位乘法 1.1.算法分析算法分析 X X補補 = = X X0 0.X.X1 1X X2 2X Xn n (XY) (XY)補補 = X= X補補.Y= X.Y= X補補.Y.Y補補 (1 1)Y Y為正:為正:Y Y補補 = 0.= 0.Y Y1 1Y Y2 2Y Yn n (XY)(XY)補補 = = X X補補(0.(0.Y Y1 1Y Y2 2Y Yn n) )(2 2)Y Y為負:為負:Y Y補補 = 1. = 1.Y Y1 1Y Y

36、2 2Y Yn n (XY)(XY)補補 = = X X補補(0.(0.Y Y1 1Y Y2 2Y Yn n)+(-X)+(-X)補補(3 3)Y Y符號任意:符號任意: ( (XY)XY)補補 = = X X補補(0.(0.Y Y1 1Y Y2 2Y Yn n)+(-X)+(-X)補補Y Y0 0符號位符號位(4 4)展開為部分積的累加和形式:)展開為部分積的累加和形式:( (XY)XY)補補 = = X X補補(0.(0.Y Y1 1Y Y2 2Y Yn n)+(-X)+(-X)補補Y Y0 0 = = X X補補(0.(0.Y Y1 1Y Y2 2Y Yn n)-X)-X補補Y Y0 0

37、 = = X X補補(-(-Y Y0 0+ +2 Y2 Y1 1+ +2 Y2 Y2 2+ + +2 Y2 Yn n) )-1-1 -2-2 - -n n = = X X補補 - -Y Y0 0+(+(Y Y1 1-2 Y-2 Y1 1)+()+(2 Y2 Y2 2-2 Y-2 Y2 2)+)+-1-1 -1-1 -2-2-(-(n-1) -nn-1) -n +(+(2 2 Y Yn n-2 Y-2 Yn n) ) = = X X補補 ( (Y Y1 1-Y-Y0 0)+2 (Y)+2 (Y2 2-Y-Y1 1)+2 (Y)+2 (Y3 3-Y-Y2 2)+)+-1 -2-1 -2 +2 (0

38、 -+2 (0 -Y Yn n) )- -n n +2 (+2 (0 0 - -Y Yn n) )- -n nY Yn+1n+1 = = X X補補 ( (Y Y1 1-Y-Y0 0)+2 ()+2 (Y Y2 2-Y-Y1 1)+2 ()+2 (Y Y3 3-Y-Y2 2)+)+-1 -2-1 -2 +2 (+2 (0 0 - -Y Yn n) )- -n nY Yn+1n+1= X X補補 . .( Y Yi+1i+1- -Y Yi i)2)2- -i i)ni=0比較法:用相鄰兩位乘數比較的結果決定比較法:用相鄰兩位乘數比較的結果決定 + +X X補補、- -X X補補或或+0+0。A0

39、補補=0A1補補=2-1A0補補+(Y Yn+1n+1- -Y Yn n)x補補A2補補=2-1A1補補+(Y Yn n- -Y Yn-1n-1)x補補.An補補=2-1An-1補補+(Y Y2 2- -Y Y1 1)x補補XY補補= An補補+(Y Y1 1- -Y Y0 0)x補補 2.2.比較法比較法算法算法Y Yn n( (高位高位) ) Y Yn+1n+1( (低位低位) ) 操作操作( (A A補補為部分積累加和為部分積累加和) ) 0 00 00 10 11 01 01 1 1 1 1/21/2A A補補 1/2( 1/2(A A補補+ +X X補補) ) 1/2( 1/2(A

40、A補補- -X X補補) ) 1/2 1/2A A補補( 0 )( 0 )( 1 )( 1 )(-1 )(-1 )( 0 )( 0 )3.3.運算實例運算實例X=-0.1101,Y=-0.1011,X=-0.1101,Y=-0.1011,求求( (XY)XY)補補。初值:初值:A=00.0000,B=XA=00.0000,B=X補補=11.0011,=11.0011, - -B=(-X)B=(-X)補補=00=00.1101,.1101,C =YC =Y補補=1=1.0101.0101步數步數 條件條件 操作操作 A C A C 00.0000 1.010 00.0000 1.0101 1 1

41、 1)1 01 0- -B BC Cn n+ 00.1101+ 00.110100.00.1101110100.00.011001101 11.011.0101012 2)0 10 1+ +B B+ 11.0011+ 11.001111.11.1001100111.11.1100110011111.01.010103 3)1 01 0- -B B+ 00.1101+ 00.110100.00.1001100100.00.010001001111111.1.01014 4)0 10 1+ +B B+ 11.0011+ 11.001111.11.0111011111.11.101110111111

42、11111.01.00 0 C Cn+1n+1C Cn nC Cn+1n+15 5)1 01 0- -B B+ 00.1101+ 00.1101( (XY)XY)補補 = 0.10001111= 0.1000111100.00.1000100011111111(1)(1)A A、B B取雙符號位,符號參加運算;取雙符號位,符號參加運算;(2)(2)C C取單符號位,符號參加移位。取單符號位,符號參加移位。(3)(3)C C末位設置附加位末位設置附加位C Cn+n+1 1,初值為初值為0 0,C Cn nC Cn+n+1 1組成判組成判 斷位,決定運算操作斷位,決定運算操作;(4)(4)作作n

43、n位運算位運算, , 需作第需作第n+1n+1步步, ,最后一步不移位。最后一步不移位。 4.4.運算規(guī)則運算規(guī)則5. .算法流程算法流程0 0 A A、XX補補 B B、YY補補 C C、0 CR0 CRY Yn n Y Yn+1n+1 = =?CR=n+1 CR=n+1 ?Ai補補不變不變Ai補、補、Y右移一位右移一位,i+1 CRCR00YN1110Ai補補 +-X補補Ai補補 +X補補01結束結束2.3.4 定點除法運算定點除法運算手算:除數右移,夠減商手算:除數右移,夠減商1,相減相減,不夠減商不夠減商0,不減,不減例:例:-0.1001/0.1011商商-0.1101,余數,余數0

44、.00000001計算機實現余數左移,夠減商計算機實現余數左移,夠減商1,不夠減商,不夠減商0計算機要解決的問題:計算機要解決的問題:如何判斷夠減?(先判后減和先減后判)如何判斷夠減?(先判后減和先減后判)如何處理符號位?如何處理符號位?如何提高運算速度?如何提高運算速度?一、一、 原碼恢復余數法原碼恢復余數法1.1.算法算法 比較兩數大小可用減法試探。比較兩數大小可用減法試探。2 2余數余數- -除數除數= =新余數新余數為正為正: :夠減夠減, ,商商1 1。下一步。下一步作作r ri+1i+1= =2 2r ri i-Y-Y為負為負: :不夠減不夠減, ,商商0,0,恢復恢復原余數。原余

45、數。2.2.實例實例X=-0.10110X=-0.10110,Y=0.11111Y=0.11111,求求X/Y,X/Y,給出商給出商Q Q和余數和余數R R。設置:設置:A A:被除數、余數,被除數、余數,B B:除數,除數,C C:商商初值:初值:A= X = 00.10110A= X = 00.10110 B= Y = 00.11111 B= Y = 00.11111 C= Q = 0.00000C= Q = 0.00000 - -B= 11.00001B= 11.00001步數步數 條件條件 操作操作 A C A C 00.10110 0.0000000.10110 0.00000 1

46、1)0 0- -B B 01.01100 01.01100+11.00001+11.0000100.0110100.011010.00000.00001 12 2)1 1 - -B B00.1101000.11010+11.00001+11.0000111.1101111.110110.0000.00010103 3)恢復余數恢復余數+ +B B+00.11111+00.1111100.1101000.1101001.1010001.101000.000.001011014 4)0 0- -B B +11.00001+11.0000100.1010100.10101C Cn nS SA AQ

47、Q1 1 Q Q2 2 Q Q3 3 r r0 02 2r r0 0r r1 12 2r r1 1r r2 2r r2 22 2r r2 2r r3 3步數步數 條件條件 操作操作 A C A C 00.10101 0.0000.10101 0.00101 101 5 5)0 0- -B B 01.01010 01.01010+11.00001+11.0000100.0101100.010110.00.0101110116 6)1 1 - -B B00.1011000.10110+11.00001+11.0000111.1011111.101110.0.10110101107 7)恢復余數恢復

48、余數+ +B B+00.11111+00.1111100.1011000.10110Q= -0.10110Q= -0.10110C Cn nQ Q4 4 Q Q5 5 Q Q3 3 r r3 32 2r r3 3r r4 42 2r r4 4r r5 5r r5 5R= 0.10110R= 0.101102 2-5-5X/Y=-0.10110+X/Y=-0.10110+-0.10110-0.101102 2-5-5 0.11111 0.111113.3.說明說明(1 1)A A、B B雙符號位,裝雙符號位,裝X X與與Y Y的絕對值的絕對值,|,|X|X|小于小于|Y| |Y| 。(2)(2)

49、若最后一步所得余數為負,則應恢復余數,以若最后一步所得余數為負,則應恢復余數,以保證保證r0r0。(3 3)運算結束后,余數乘以運算結束后,余數乘以2 2- -n n ,與被除數同號。與被除數同號。第二步第二步: :2 2r r1 1-B=-B=r r2 200第三步第三步: :r r2 2+B=+B=r r2(2(恢復余數恢復余數) )第四步第四步: :2 2r r2 2-B=-B=r r3 32 2r r2 2-B=2(-B=2(r r2 2+B)-B+B)-B =2 =2r r2 2+B=+B=r r3 3 第二步第二步: :2 2r r1 1-B=-B=r r2 200第三步第三步:

50、:2 2r r2 2+B=+B=r r3 3 ( (不恢復余數不恢復余數) )二、二、 原碼不恢復余數法原碼不恢復余數法(加減交替法加減交替法)1.1.算法分析算法分析恢復余數法恢復余數法不恢復余數法不恢復余數法2.2.算法算法取絕對值相除,符號位單獨處理取絕對值相除,符號位單獨處理2 2)| |X|X|小于小于|Y| |Y| 3 3)根據余數符號判斷上商,為正商)根據余數符號判斷上商,為正商1 1,為負商,為負商0 04 4)ri+1=2ri+(1-2Qi)Yri+1=2ri+(1-2Qi)Yriri為正,則為正,則QiQi為為1 1,第,第i+1i+1步作步作2 2ri-Yri-Y;rir

51、i為負,則為負,則QiQi為為0 0,第,第i+1i+1步作步作2 2ri+Yri+Y。5 5)求求n n位商,做位商,做n n步操作;若第步操作;若第n n步余數為負,則做第步余數為負,則做第n+1n+1步恢復余步恢復余數,不移位,最終余數符號與被除數相同。數,不移位,最終余數符號與被除數相同。3.3.實例實例X=0.10110,Y=-0.11111X=0.10110,Y=-0.11111,求求X/YX/Y,給出商給出商Q Q和余數和余數R R。初值:初值:A= X = 00.10110A= X = 00.10110 B= Y = 00.11111 B= Y = 00.11111 C= Q

52、= 0.00000C= Q = 0.00000 - -B=11.00001B=11.00001步數步數 條件條件 操作操作 A C A C 00.10110 0.0000000.10110 0.00000 1 1)為正為正- -B B 01.01100 01.01100+11.00001+11.0000100.0110100.011010.00000.00001 12 2)為負為負 - -B B00.1101000.11010+11.00001+11.0000111.1101111.110110.0000.00010103 3)+ +B B+00.11111+00.1111111.101101

53、1.101100.000.00101101為正為正00.1010100.10101C Cn n r rf fQ Q1 1 Q Q2 2 Q Q3 3 r r0 02 2r r0 0r r1 12 2r r1 1r r2 22 2r r2 2r r3 34 4)為正為正- -B B 01.01010 01.01010+11.00001+11.0000100.0101100.010110.00.010111011Q Q4 4 2 2r r3 3r r4 4步數步數 條件條件 操作操作 A C A C 00.01011 0.000.01011 0.01011 1011 6 6)為負為負 恢復余數恢復

54、余數+ +B B+00.11111+00.1111100.1011000.10110Q= -0.10110Q= -0.10110C Cn nQ Q4 4 r r4 45 5)為正為正- -B B 00.10110 00.10110+11.00001+11.0000111.1011111.101110.0.1011010110Q Q5 5 2 2r r4 4r r5 5r r5 5R= 0.10110R= 0.101102 2-5-5X/Y=-0.10110+X/Y=-0.10110+ 0.10110 0.101102 2-5-5 -0.11111 -0.111114. .算法流程算法流程|X|

55、 A|X| A、|Y| B|Y| B、0 0 C C、0 CR0 CR A0 A0A0?YYNA+BAN三、補碼不恢復余數除法三、補碼不恢復余數除法1.算法算法X補補Y補補數符數符商符商符第一步第一步操作操作r補補Y補數補數符符上商上商 下一步操作下一步操作同號同號0減減同號同號異號異號102 2 riri補補- -Y Y補補2 2 riri補補+ +Y Y補補異號異號1加加同號同號異號異號102 2 riri補補- -Y Y補補2 2 riri補補+ +Y Y補補1)第一步操作:被除數與除數同號,商)第一步操作:被除數與除數同號,商1,2*被除數減除數,被除數減除數,被除數與除數異號,商被除

56、數與除數異號,商0, 2*被除數加除數。被除數加除數。2)余數和除數同號,商)余數和除數同號,商1,余數左移,余數左移1位,下次減除數;余數和位,下次減除數;余數和除數異號,商除數異號,商0,余數左移,余數左移1位,下次加除數;位,下次加除數;3)商的符號在第一次試算時求出,但僅僅是假商,只是為除法)商的符號在第一次試算時求出,但僅僅是假商,只是為除法做準備工作,因此為得到做準備工作,因此為得到n位商,共作位商,共作n+1步,第一次上的商移步,第一次上的商移出寄存器,但多數情況下可以得到出寄存器,但多數情況下可以得到n-1位商即可。位商即可。4)商的修正:在精度要求不高的場合,將商的末尾恒置)

57、商的修正:在精度要求不高的場合,將商的末尾恒置1,同,同時符號位加時符號位加1,也即是,也即是n-1假商加假商加(1+2-n)。3.實例實例X=+0.1000X=+0.1000,Y=-0.1010Y=-0.1010,求求 X/Y=X/Y=?A=XA=X補補=00.1000=00.1000B=YB=Y補補=11.0110=11.0110- -B=00.1010B=00.1010C=QC=Q補補=0.0000=0.00002.3.5浮點四則運算浮點四則運算1. 浮點加減運算浮點加減運算步驟:步驟:1 1). .檢查能否簡化操作。檢查能否簡化操作。 判操作數是否為判操作數是否為0 0尾數為尾數為0

58、0階碼下溢階碼下溢2 2). .對階對階例例. .(1)(1)對階:使兩數階碼相等對階:使兩數階碼相等( (小數點實際位置對齊,小數點實際位置對齊, 尾數對應權值相同尾數對應權值相同) )。(2)(2)對階規(guī)則:對階規(guī)則:小階向大階對齊小階向大階對齊。2 2 0.10010.10012 2 0.11010.11012 23 32 2 0.01000.01003 32 2 0.11010.11013 33 3). .尾數加減尾數加減. .(1) 1.0001(1) 1.0001 +0.1001 +0.1001(4)(4)階碼比較:比較線路或減法階碼比較:比較線路或減法。(3)(3)對階操作:對階

59、操作:小階階碼增大,尾數右移。小階階碼增大,尾數右移。例例. .AEBAEBE E,則則B BE E+1 B+1 BE E,B BM M,直到直到B BE E=A=AE E1.10101.1010(2) 0.0101(2) 0.0101 +0.1101 +0.1101A AM M + B+ BM M A AM M4 4). .結果規(guī)格化結果規(guī)格化 M 1/2M 1M 1應應左移規(guī)格化左移規(guī)格化應應右移規(guī)格化右移規(guī)格化A AE E-1 A-1 AE E若若 A Af1f1A Af2f2=1,=1,則右規(guī):則右規(guī):(1) 11.0001(1) 11.0001 +00.1001 +00.100111

60、.101011.1010(2) 00.0101(2) 00.0101 +00.1101 +00.110101.001001.0010(-1/2(-1/2除外除外) )A Af1f1A Af2 f2 A A1 1A AM M1111. .1 1010010若若 A Af1f1A Af2f2A A1 1+A+Af1f1A Af2f2A A1 1=1,=1,則左規(guī):則左規(guī):0101.0010.0010A Af1f1A Af2 f2 A AM MA AE E+1 A+1 AE EA AE E+B+BE EA AB=2 B=2 ( (A AM MB BM M) ) 2. 浮點乘法運算浮點乘法運算步驟:步

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論