浮點數計算方法_第1頁
浮點數計算方法_第2頁
浮點數計算方法_第3頁
浮點數計算方法_第4頁
浮點數計算方法_第5頁
已閱讀5頁,還剩159頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

關于浮點數計算方法第1頁,課件共164頁,創(chuàng)作于2023年2月2.1數據與文字的表示方法

2.1.1數據格式計算機中常用的數據表示格式有兩種:1定點格式

2浮點格式一般來說,定點格式容許的數值范圍有限,但要求的處理硬件比較簡單。而浮點格式容許的數值范圍很大,但要求的處理硬件比較復雜。第2頁,課件共164頁,創(chuàng)作于2023年2月1.定點數的表示方法定點表示:約定機器中所有數據的小數點位置是固定不變的。由于約定在固定的位置,小數點就不再使用記號“.”來表示。通常將數據表示成純小數或純整數。定點數x=x0x1x2…xn在定點機中表示如下(x0:符號位,0代表正號,1代表負號):第3頁,課件共164頁,創(chuàng)作于2023年2月純小數的表示范圍為(x0x1x2…xn各位均為0時最??;各位均為1時最大)

0≤|x|≤1-2-n

(2.1)

純整數的表示范圍為

0≤|x|≤2n-1

(2.2)目前計算機中多采用定點純整數表示,因此將定點數表示的運算簡稱為整數運算。第4頁,課件共164頁,創(chuàng)作于2023年2月電子的質量(9×10-28克)和太陽的質量(2×1033克)相差甚遠,在定點計算機中無法直接來表示這個數值范圍.要使它們送入定點計算機進行某種運算,必須對它們分別取不同的比例因子,使其數值部分絕對值小于1,即:

9×10-28=0.9×10-27

2×1033=0.2×1034

這里的比例因子10-27

和1034要分別存放在機器的某個存儲單元中,以便以后對計算結果按這個比例增大。顯然這要占用一定的存儲空間和運算時間。因此得到浮點表示法如下:2.浮點數的表示方法第5頁,課件共164頁,創(chuàng)作于2023年2月浮點表示法:把一個數的有效數字和數的范圍在計算機的一個存儲單元中分別予以表示,這種把數的范圍和精度分別表示的方法,相當于數的小數點位置隨比例因子的不同而在一定范圍內自由浮動,稱為浮點表示法。任意一個十進制數N可以寫成N=10E.M(2.3)同樣在計算機中一個任意進制數N可以寫成N=Re.M

(2.4)M:尾數,是一個純小數。e

:比例因子的指數,稱為浮點數的指數,是一個整數。R:比例因子的基數,對于二進計數值的機器是一個常數,一般規(guī)定R為2,8或16。

第6頁,課件共164頁,創(chuàng)作于2023年2月

一個機器浮點數由階碼和尾數及其符號位組成(尾數:用定點小數表示,給出有效數字的位數決定了浮點數的表示精度;階碼:用整數形式表示,指明小數點在數據中的位置,決定了浮點數的表示范圍。):第7頁,課件共164頁,創(chuàng)作于2023年2月32位浮點數的IEEE754標準格式為:64位浮點數的IEEE754標準格式為:第8頁,課件共164頁,創(chuàng)作于2023年2月在IEEE754標準格式表示的32位浮點數中,S:浮點數的符號位,1位,

0表示正數,1表示負數。

M:尾數,23位,用小數表示,小數點放在尾數域的最前面。

E:階碼,8位階符采用隱含方式,即采用移碼方式來表示正負指數。移碼方法對兩個指數大小的比較和對階操作都比較方便,因為階碼域值大者其指數值也大。采用這種方式時,將浮點數的指數真值e

變成階碼E

時,應將指數e

加上一個固定的偏移值127(01111111),即E=e+127.第9頁,課件共164頁,創(chuàng)作于2023年2月IEEE754標準中,一個規(guī)格化的32位浮點數x的真值可表示為x=(-1)s×(1.M)×2E-127

e=E-127一個規(guī)格化的64位浮點數x的真值為x=(-1)s×(1.M)×2E-1023

e=E-1023為提高數據的表示精度,當尾數的值不為0時,尾數域的最高有效位應為1,否則以修改階碼同時左右移小數點的辦法,使其變成這一表示形式,這稱為浮點數的規(guī)格化表示。當浮點數的尾數為0,不論其階碼為何值,或者當階碼的值遇到比它能表示的最小值還小時,不管其尾數為何值,計算機都把該浮點數看成零值,稱為機器零。

第10頁,課件共164頁,創(chuàng)作于2023年2月

當階碼E為全0且尾數M也為全0時,表示的真值x為零,結合符號位S為0或1,有正零和負零之分。當階碼E為全1且尾數M為全0時,表示的真值x為無窮大,結合符號位S為0或1,也有+∞和-∞之分。這樣在32位浮點數表示中,要除去E用全0和全1(255)10表示零和無窮大的特殊情況,指數的偏移值不選128(10000000),而選127(01111111)。對于規(guī)格化浮點數,E的范圍變?yōu)?到254,真正的指數值e

則為-126到+127。因此32位浮點數表示的絕對值的范圍是10-38~1038(以10的冪表示)。第11頁,課件共164頁,創(chuàng)作于2023年2月

浮點數所表示的范圍遠比定點數大。一臺計算機中究竟采用定點表示還是浮點表示,要根據計算機的使用條件來確定。一般在高檔微機以上的計算機中同時采用定點、浮點表示,由使用者進行選擇,而單片機中多采用定點表示。[例1]

若浮點數x的754標準存儲格式為

(41360000)16,求其浮點數的十進制數值。[例2]

將(20.59375)10轉換成754標準的32位浮點數的二進制存儲格式。

第12頁,課件共164頁,創(chuàng)作于2023年2月[例1]

若浮點數x的754標準存儲格式為

(41360000)16,求其浮點數的十進制數值。[解:]

將十六進制數展開后,可得二進制數格式為

指數e=階碼-127=10000010-01111111=00000011=(3)10

包括隱藏位1的尾數

1.M=1.01101100000000000000000=1.011011

于是有

x=(-1)s×1.M×2e

=+(1.011011)×23=+1011.011=(11.375)10

第13頁,課件共164頁,創(chuàng)作于2023年2月[例2]

將(20.59375)10轉換成754標準的32位浮點數的二進制存儲格式。

[解:]

首先分別將整數和分數部分轉換成二進制數:

20.59375=10100.10011然后移動小數點,使其在第1,2位之間

10100.10011=1.010010011×24

e=4于是得到:

S=0,

E=4+127=131,

M=010010011最后得到32位浮點數的二進制存儲格式為:

01000001101001001100000000000000=(41A4C000)16

第14頁,課件共164頁,創(chuàng)作于2023年2月3.十進制數串的表示方法

目前,大多數通用性較強的計算機都能直接處理十進制形式表示的數據。十進制數串在計算機內主要有兩種表示形式:

(1)字符串形式:一個字節(jié)存放一個十進制的數位或符號位。為了指明這樣一個數,需要給出該數在主存中的起始地址和位數(串的長度)。

(2)壓縮的十進制數串形式:一個字節(jié)存放兩個十進制的數位。它比前一種形式節(jié)省存儲空間,又便于直接完成十進制數的算術運算,是廣泛采用的較為理想的方法。第15頁,課件共164頁,創(chuàng)作于2023年2月4.自定義數據表示

在傳統(tǒng)的計算機體系結構中,用指令本身來說明操作數據的類型。如定點加法表示操作數是純小數或純整數;浮點加法表示操作數是浮點數;十進制加法表示操作數是BCD數。由于操作數據類型不同,要設三種不同的指令(操作碼)來加以區(qū)分。自定義數據表示則用數據本身來說明數據類型。表示形式有兩種,即標志符數據表示和描述符數據表示。

第16頁,課件共164頁,創(chuàng)作于2023年2月描述符數據表示主要用來描述多維結構的數據類型,如向量、矩陣、記錄等。描述符標志位部分指明這是一個數據描述符;特征標記部分指明數據的各種特征;長度部分指明數組中元素個數;起始地址部分指明數據塊的首地址。其格式為:標志符數據表示要求對每一個數據都附加標志符。其指明后面的數據所具有的類型,如整數、浮點數、BCD數、字符串等,其格式如下:

標識符

數據描述符標志位特征標記數據塊長度數據塊起始地址第17頁,課件共164頁,創(chuàng)作于2023年2月2.1.2數的機器碼表示

在計算機中對數據進行運算操作時,為了妥善的處理好符號位問題,就產生了把符號位和數字位一起編碼來表示相應的數的各種表示方法,如原碼、補碼、反碼、移碼等。為了區(qū)別一般書寫表示的數和機器中這些編碼表示的數,通常將前者稱為真值,后者稱為機器數或機器碼。常用的機器碼表示法:

1.原碼表示法

2.補碼表示法

3.反碼表示法

4.移碼表示法第18頁,課件共164頁,創(chuàng)作于2023年2月1.原碼表示法

若定點小數的原碼形式為x0.x1x2…xn,則原碼表示的定義是:

{

1>x≥0

[x]原=1-x=1+|x|0≥x>-1

式中[x]原是機器數,x是真值

若定點整數的原碼形式為x0x1x2…xn

,則原碼表示的定義是

{x

2n>x≥0

[x]原=2n-x=2n+|x|0≥x>-2n第19頁,課件共164頁,創(chuàng)作于2023年2月

對于0,原碼機器中往往有“+0”、“-0”之分,故有兩種形式:

[+0]原=0.000...0

[-0]原=1.000...0

采用原碼表示法簡單易懂,但它的最大缺點是加法運算復雜。這是因為,當兩數相加時,如果是同號則數值相加;如果是異號,則要進行減法。而在進行減法時還要比較絕對值的大小,然后大數減去小數,最后還要給結果選擇符號。為了解決這些矛盾,人們找到了補碼表示法。第20頁,課件共164頁,創(chuàng)作于2023年2月2.補碼表示法

我們先以鐘表對時為例說明補碼的概念。假設現(xiàn)在的標準時間為4點正;而有一只表已經7點了,為了校準時間,可以采用兩種方法:一是將時針退7-4=3格;一是將時針向前撥12-3=9格。這兩種方法都能對準到4點,由此可以看出,減3和加9是等價的,就是說9是(-3)對12的補碼,可以用數學公式表示:

-3=+9(mod12)

mod12的意思就是12模數,這個“?!北硎颈粊G掉的數值。上式在數學上稱為同余式。第21頁,課件共164頁,創(chuàng)作于2023年2月上例中其所以7-3和7+9(mod12)等價,原因就是表指針超過12時,將12自動丟掉,最后得到16-12=4。從這里可以得到一個啟示,就是負數用補碼表示時,可以把減法轉化為加法。這樣,在計算機中實現(xiàn)起來就比較方便。

7–3=47+9=4以12取模數(mod12)

-3=+9(mod12)采用補碼表示法進行減法運算就比原碼方便得多了。因為不論數是正還是負,機器總是做加法,減法運算可變?yōu)榧臃ㄟ\算。關鍵是我們需要換算出兩個操作數的補碼表示。第22頁,課件共164頁,創(chuàng)作于2023年2月

若定點小數補碼形式為x0.x1x2…xn,則補碼表示的定義是:

{

1>x≥0

[x]補=2+x=2-|x|

0≥x≥-1

(mod2)

若定點整數補碼形式為x0x1x2…xn

,則補碼表示的定義是:

{

2n>x≥0[x]補=

2n+1+x=2n+1-|x|

0≥x≥-2n(mod2n+1)

根據補碼定義,求負數的補碼要從2減去|x|。為了用加法代替減法,結果還得在求補碼時作一次減法,這顯然是不方便的。下面介紹的反碼表示法可以解決負數的求補問題。第23頁,課件共164頁,創(chuàng)作于2023年2月3.反碼表示法

所謂反碼,就是二進制的各位數碼0變?yōu)?,1變?yōu)?。也就是說,若Xi=1,則反碼為xi=0;若xi=0,則反碼xi=1。數值上面的一橫表示反碼的意思。在計算機中用觸發(fā)器寄存數碼,若觸發(fā)器Q端輸出表示原碼,則其Q端輸出就是反碼。由此可知,反碼是容易得到的。第24頁,課件共164頁,創(chuàng)作于2023年2月

若定點小數反碼形式為x0.x1x2…xn,則反碼表示的定義是:

{x

1>x≥0

[x]反=(2-2-n)+x

0≥x>-1一般情況下,對正數和負數的x值,x=+0.x1x2…xn,則[x]反=0.x1x2…xnx=-0.x1x2…xn,則[x]反=1.x1x2…xn

若定點整數反碼形式為x0x1x2…xn,則反碼表示的定義是:

{x

2n>x≥0

[x]反=(2n+1-1)+x

0≥x>-2n第25頁,課件共164頁,創(chuàng)作于2023年2月我們比較反碼與補碼的公式,對于負數有:定點小數

[x]反=(2-2-n)+x

[x]補=2+x可得到

[x]補=[x]反+2-n

定點整數[x]反=(2n+1-1)+x

[x]補=2n+1+x可得到

[x]補=[x]反+1

這就是通過反碼求補碼的重要公式。這個公式告訴我們,若要一個負數變補碼,其方法是符號位置1,其余各位0變1,1變0,然后在最末位(2-n)上加1。第26頁,課件共164頁,創(chuàng)作于2023年2月4.移碼表示法移碼通常用于表示浮點數的階碼。由于階碼是個n位的整數,假定定點整數移碼形式為x0x1x2…xn時,對定點整數移碼的傳統(tǒng)定義是:

[x]移=2n+x

2n>x≥-2n

若階碼數值部分為5位,以x表示真值,則:

[x]移=25+x

25>x≥-25

第27頁,課件共164頁,創(chuàng)作于2023年2月小結:上面的數據四種機器表示法中,移碼表示法主要用于表示浮點數的階碼。由于補碼表示對加減法運算十分方便,因此目前機器中廣泛采用補碼表示法。在這類機器中,數用補碼表示,補碼存儲,補碼運算。也有些機器,數用原碼進行存儲和傳送,運算時改用補碼。還有些機器在做加減法時用補碼運算,在做乘除法時用原碼運算。第28頁,課件共164頁,創(chuàng)作于2023年2月[例5]設機器字長16位,定點表示,尾數15位,數符1位,問:

(1)定點原碼整數表示時,最大正數是多少?最小負數是多少?(2)定點原碼小數表示時,最大正數是多少?最小負數是多少?;

[解:]

(1)定點原碼整數表示

最大正數值=(215-1)10=(+32767)10

最小負數值=-(215-1)10=(-32767)10

(2)定點原碼小數表示

最大正數值=(1-2-15)10=(+0.111...11)2

最小負數值=-(1-2-15)10=(-0.111..11)2

01111111111111111111111111111111第29頁,課件共164頁,創(chuàng)作于2023年2月[例6]假設由S,E,M三個域組成的一個32位二進制數所表示的非零規(guī)格化浮點數x,真值表示為:x=(-1)s×(1.M)×2E-128問:它所表示的規(guī)格化的最大正數、最小正數、最大負數、最小負數是多少?

[解:](1)最大正數

x=[1+(1-2-23)]×2127

(2)最小正數

x=1.0×2-128

(3)最小負數

x=-[1+(1-2-23)]×2127

(4)最大負數

x=-1.0×2-128

01111111111111111111111111111111000000000000000000000000000000001111111111111111111111111111111110000000000000000000000000000000第30頁,課件共164頁,創(chuàng)作于2023年2月[例7]若機器使用8位表示定點數,將數x=+100/-100,y=+0.59375/-0.59375分別轉換為各種機器碼形式。

[解:]已知數據位數為8位,最高位為符號位,數據表示范圍可用7位,那么定點整數的范圍是:0≤|x|≤127(27-1)定點小數的范圍是:

0≤|x|≤0.9921875(1-2-7)

(100)10=(1100100)2(0.59375)10=(0.10011)2[+1100100]原=01100100[-1100100]原=11100100[+1100100]反=01100100[-1100100]反=10011011[+1100100]補=01100100[-1100100]補=10011100[+0.10011]原=01001100[-0.10011]原=11001100[+0.10011]反=01001100[-0.10011]反=10110011[+0.10011]補=01001100[-0.10011]補=10110100第31頁,課件共164頁,創(chuàng)作于2023年2月2.1.3字符與字符串的表示方法1.字符的表示方法現(xiàn)代計算機不僅處理數值領域的問題,而且處理大量非數值領域的問題。這樣一來,必然要引入文字、字母以及某些專用符號,以便表示文字語言、邏輯語言等信息。目前國際上普遍采用的字符系統(tǒng)是七單位的ASCII碼(美國國家信息交換標準字符碼),它包括10個十進制數碼,26個英文字母和一定數量的專用符號,如$,%,+,=等,共128個元素,因此二進制編碼需7位,加一位偶校驗位,共8位一個字節(jié)。參見書中表2.1的ASCII碼字符編碼表。第32頁,課件共164頁,創(chuàng)作于2023年2月2.字符串

字符串是指連續(xù)的一串字符,通常方式下,它們占用主存中連續(xù)的多個字節(jié),每個字節(jié)存一個字符。當主存字由2個或4個字節(jié)組成時,在同一個主存字中,既可按從低位字節(jié)向高位字節(jié)的順序存放字符串的內容,也可按從高位字節(jié)向低位字節(jié)的次序順序存放字符串的內容。[例]將下面字符串從高位字節(jié)到低位字節(jié)依次存在主存中。

IF└┘A>B└┘THEN└┘READ(C)

第33頁,課件共164頁,創(chuàng)作于2023年2月2.1.4漢字的表示方法1.漢字的輸入編碼

當前采用的方法主要有以下三類:

數字編碼常用的是國標區(qū)位碼,用數字串代表一個漢字輸入。區(qū)位碼是將國家標準局公布的6763個兩級漢字分為94個區(qū),每個區(qū)分94位,實際上把漢字表示成二維數組,每個漢字在數組中的下標就是區(qū)位碼。區(qū)碼和位碼各兩位十進制數字,因此輸入一個漢字需按鍵四次。數字編碼輸入的優(yōu)點是無重碼,且輸入碼與內部編碼的轉換比較方便,缺點是代碼難以記憶。

拼音碼拼音碼是以漢字拼音為基礎的輸入方法。使用簡單方便,但漢字同音字太多,輸入重碼率很高,同音字選擇影響了輸入速度。

字形編碼字形編碼是用漢字的形狀來進行的編碼。把漢字的筆劃部件用字母或數字進行編碼,按筆劃的順序依次輸入,就能表示一個漢字。第34頁,課件共164頁,創(chuàng)作于2023年2月2.漢字內碼漢字內碼是用于漢字信息的存儲、交換、檢索等操作的機內代碼,一般采用兩個字節(jié)表示。英文字符的機內代碼是七位的ASCII碼,當用一個字節(jié)表示時,最高位為“0”。為了與英文字符能相互區(qū)別,漢字機內代碼中兩個字節(jié)的最高位均規(guī)定為“1”。注意:有些系統(tǒng)中字節(jié)的最高位用于奇偶校驗位,這種情況下用三個字節(jié)表示漢字內碼。第35頁,課件共164頁,創(chuàng)作于2023年2月3.漢字字模碼字模碼是用點陣表示的漢字字形代碼,它是漢字的輸出形式。字模點陣只能用來構成漢字庫,用于漢字的顯示輸出或打印輸出。注意,漢字的輸入編碼、漢字內碼、字模碼是計算機中用于輸入、內部處理、輸出三種不同用途的編碼,不要混為一談。圖2.1漢字的字模點陣及編碼

第36頁,課件共164頁,創(chuàng)作于2023年2月2.1.5校驗碼元件故障/噪聲干擾等各種因素常導致計算機在處理信息過程中出現(xiàn)錯誤。為了防止錯誤可將信號采用專門的邏輯線路進行編碼以檢測錯誤,甚至校正錯誤。通常的方法是在每個字上添加一些校驗位,用來確定字中出現(xiàn)錯誤的位置。最簡單且應用廣泛的檢錯碼是采用一位校驗位的奇校驗或偶校驗。設x=(x0x1…xn-1)是一個n位字,

則奇校驗位C定義為

C=x0⊕x1⊕…⊕xn-1

同理偶校驗位C定義為

C=x0⊕x1⊕…⊕xn-1第37頁,課件共164頁,創(chuàng)作于2023年2月2.2定點加法、減法運算

2.2.1補碼加法

負數用補碼表示后,可以和正數一樣來處理。這樣,運算器里只需要一個加法器就可以了,不必為了負數的加法運算,再配一個減法器。補碼加法的公式是

[x]補+[y]補=[x+y]補(mod2)

現(xiàn)分四種情況來證明。假設采用定點小數表示,因此證明的先決條件是

︱x︱﹤1,︱y︱﹤1,︱x+y︱﹤1。第38頁,課件共164頁,創(chuàng)作于2023年2月(1)x﹥0,y﹥0,則x+y﹥0。

相加兩數都是正數,故其和也一定是正數。正數的補碼和原碼是一樣的,可得:

[x]補+[y]補=x+y=[x+y]補

(mod2)(2)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)第39頁,課件共164頁,創(chuàng)作于2023年2月(3)x<0,y>0,則x+y>0或x+y<0。這種情況等同于第2種情況。(4)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)=[x+y]補

(mod2)至此我們證明了,在模2意義下,任意兩數的補碼之和等于該兩數之和的補碼.這是補碼加法的理論基礎,其結論也適用于定點整數。第40頁,課件共164頁,創(chuàng)作于2023年2月[例8]

x=0.1001,y=0.0101,用補碼求x+y[解:]

[x]補=0.1001,[y]補=0.0101[x]補

0.1001

+[y]補

0.0101

[x+y]補

0.1110

所以x+y=+0.1110

第41頁,課件共164頁,創(chuàng)作于2023年2月[例9]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

由以上兩例看到,補碼加法的特點,一是符號位要作為數的一部分一起參加運算,二是要在模2的意義下相加,即超過2的進位要丟掉。第42頁,課件共164頁,創(chuàng)作于2023年2月2.2.2補碼減法

負數的減法運算也要設法化為加法來做,其所以使用這種方法而不使用直接減法,是因為它可以和常規(guī)的加法運算使用同一加法器電路,從而簡化了計算機的設計。數用補碼表示時,減法運算的公式為

[x-y]補=[x]補-[y]補=[x]補+[-y]補

只要證明[-y]補=-[y]補,上式即得證。第43頁,課件共164頁,創(chuàng)作于2023年2月現(xiàn)證明如下:

∵[x+y]補=[x]補+[y]補

(mod2)∴[y]補=[x+y]補-[x]補

(2.19a)∵[x-y]補=[x+(-y)]補=[x]補+[-y]補∴[-y]補=[x-y]補-[x]補

(2.19a)將式(2.19a)與(2.19b)相加,得[-y]補+[y]補=[x+y]補+[x-y]補-[x]補-[x]補=[x+y+x-y]補-[x]補-[x]補=[x+x]補-[x]補-[x]補=0故[-y]補=-[y]補(mod2)第44頁,課件共164頁,創(chuàng)作于2023年2月從[y]補求[-y]補的法則是:對[y]補包括符號位“求反且最末位加1”,即可得到[-y]補。寫成運算表達式,則為[-y]補=﹁[y]補+2-n(2.21)

其中符號﹁表示對[y]補作包括符號位在內的求反操作,2-n表示最末位的1第45頁,課件共164頁,創(chuàng)作于2023年2月[例10]

已知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第46頁,課件共164頁,創(chuàng)作于2023年2月[例11]

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第47頁,課件共164頁,創(chuàng)作于2023年2月2.2.3溢出概念與檢測方法在定點小數機器中,數的表示范圍為|x|<1.在運算過程中如出現(xiàn)大于1的現(xiàn)象,稱為“溢出”。在定點機中,正常情況下溢出是不允許的。

兩個正數相加,結果大于機器所能表示的最大正數,稱為上溢。而兩個負數相加,結果小于機器所能表示的最小負數,稱為下溢。機器定點小數表示第48頁,課件共164頁,創(chuàng)作于2023年2月[例12]

x=+0.1011,y=+0.1001,求x+y。[解:]

[x]補=0.1011[y]補=0.1001[x]補

0.1011

+[y]補

0.1001[x+y]補

1.0100兩個正數相加的結果成為負數,這顯然是錯誤的。[例13]

x=-0.1101,y=-0.1011,求x+y。[解:]

[x]補=1.0011[y]補=1.0101[x]補

1.0011

+[y]補

1.0101[x+y]補

0.1000兩個負數相加的結果成為正數,這同樣是錯誤的。第49頁,課件共164頁,創(chuàng)作于2023年2月

為了判斷“溢出”是否發(fā)生,可采用兩種檢測的方法。第一種方法是采用雙符號位法,這稱為“變形補碼”或“模4補碼”,從而可使模2補碼所能表示的數的范圍擴大一倍。

第二種溢出檢測方法是采用單符號位法。從上例中看到,當最高有效位產生進位而符號位無進位時,產生上溢;當最高有效位無進位而符號位有進位時,產生下溢。在定點機中當運算結果發(fā)生溢出時,機器通過邏輯電路自動檢查出溢出,并進行中斷處理。第50頁,課件共164頁,創(chuàng)作于2023年2月2.2.4基本的二進制加法/減法器

首先我們來討論最簡單的一位全加器的結構,設定兩個二進制數字Ai,Bi和一個進位輸入Ci相加,產生一個和輸出Si,以及一個進位輸出Ci+1。

Ai

+BiCiCi+1Si

下表列出一位全加器進行加法運算的輸入輸出真值表。第51頁,課件共164頁,創(chuàng)作于2023年2月

輸入

輸出AiBiCiSiCi+10000000110010100110110010101011100111111表2.2一位全加器真值表第52頁,課件共164頁,創(chuàng)作于2023年2月

根據表2.2所示的真值表,三個輸入端和兩個輸入端可按如下邏輯方程進行聯(lián)系:

Si=Ai⊕Bi⊕CiCi+1=AiBi+BiCi+CiAi

按此表達式組成的一位全加器下圖示2.2(a)。第53頁,課件共164頁,創(chuàng)作于2023年2月第54頁,課件共164頁,創(chuàng)作于2023年2月

由上圖看到,n個1位的全加器(FA)可級聯(lián)成一個n位的行波進位加減器。M為方式控制輸入線,當M=0時,作加法(A+B)運算;當M=1時,作減法(A-B)運算,在后一種情況下,A-B運算轉化成[A]補+[-B]補運算,求補過程由B+1來實現(xiàn)。因此圖中最右邊的全加器的起始進位輸入端被連接到功能方式線M上,作減法時M=1,相當于在加法器的最低位上加1。另外圖中左邊還表示出單符號位法的溢出檢測邏輯;當Cn=Cn-1時,運算無溢出;而當Cn≠Cn-1時,運算有溢出,經異或門產生溢出信號。第55頁,課件共164頁,創(chuàng)作于2023年2月

對一位全加器(FA)來說,Si的時間延遲為6T(每級異或門延遲3T),Ci+1的時間延遲為5T,其中T被定義為相應于單級邏輯電路的單位門延遲。T通常采用一個“與非”門或一個“或非”門的時間延遲來作為度量單位。

現(xiàn)在我們計算一個n位的行波進位加法器的時間延遲。假如采用圖2.2(a)所示的一位全加器并考慮溢出檢測,那么n位行波進位加法器的延遲時間ta為

ta=n·2T+9T=(2n+9)T9T為最低位上的兩極“異或”門再加上溢出“異或”門的總時間,2T為每級進位鏈的延遲時間。第56頁,課件共164頁,創(chuàng)作于2023年2月

當不考慮溢出檢測時,有

ta=(n-1)·2T+9T

ta意味著加法器的輸入端輸入加數和被加數后,在最壞情況下加法器輸出端得到穩(wěn)定的求和輸出所需的最長時間。顯然這個時間越小越好。注意,加數、被加數、進位與和數都是用電平來表示的,因此,所謂穩(wěn)定的求和輸出,就是指穩(wěn)定的電平輸出。

注意:第一種情況下,是最低的兩個異或門加上溢出的異或門共3*3T;第二種情況下,是最低的兩個異或門加上最后一個FA的輸出異或門共3*3T。第57頁,課件共164頁,創(chuàng)作于2023年2月2.2.5十進制加法器

十進制加法器可由BCD碼(二——十進制碼)來設計,它可以在二進制加法器的基礎上加上適當的校正邏輯來實現(xiàn),該校正邏輯可將二進制的和改變成所要求的十進制格式。

n位BCD碼行波式進位加法器的一般結構如下圖2.3(a)所示,它由n級組成,每一級將一對4位的BCD數字相加,并通過一位進位線與其相鄰級連接。而每一位十進制數字的BCD加法器單元的邏輯結構示于圖2.3(b)。

第58頁,課件共164頁,創(chuàng)作于2023年2月第59頁,課件共164頁,創(chuàng)作于2023年2月

在十進制運算時,當相加二數之和大于9時,便產生進位??墒怯肂CD碼完成十進制數運算時,當和數大于9時,必須對和數進行加6修正。這是因為,采用BCD碼后,在二數相加的和數小于等于9時,十進制運算的結果是正確的;而當相加的和數大于9時,結果不正確,必須加6修正后才能得出正確的結果。第60頁,課件共164頁,創(chuàng)作于2023年2月2.3定點乘法運算

2.3.1原碼乘法

1.人工算法與機器算法的同異性

設x=0.1101,y=0.1011.下面讓我們先用習慣方法求其乘積,其過程如下:

第61頁,課件共164頁,創(chuàng)作于2023年2月

上述的運算過程與十進制乘法相似:從乘數y的最低位開始,若這一位為“1”,則將被乘數x寫下;若這一位為“0”,則寫下全0。然后在對乘數y的次高位進行乘法運算,其規(guī)則同上,不過這一位乘數的權與最低位乘數的權不一樣,因此被乘數x要左移一位。以此類推直到乘數個位乘完為止,最后將它們統(tǒng)統(tǒng)加起來便得到最后乘積z。同理,如果被乘數和乘數用定點整數表示,我們也會得到同樣的結果。數值部分的運算方法與普通的十進制小數乘法類似,不過對于用二進制表達式的數來說,其乘法規(guī)則更為簡單一些。第62頁,課件共164頁,創(chuàng)作于2023年2月

在定點計算機中,兩個原碼表示的數相乘的運算規(guī)則是:乘積的符號位由兩數的符號位按異或運算得到,而乘積的數值部分則是兩個正數相乘之積。設n位被乘數和乘數用定點小數表示被乘數[x]原=xf.xn-1…x1x0

乘數[y]原=yf.yn-1…y1y0則兩數的乘積

[z]原=(xf⊕yf)+

(0.xn-1…x1x0)(0.yn-1…y1y0)

式中,xf為被乘數符號,yf為乘數符號。第63頁,課件共164頁,創(chuàng)作于2023年2月

人們習慣的算法對機器并不完全適用。原因之一,機器通常只有n位長,兩個n位數相乘,乘積可能為2n位。原因之二,只有兩個操作數相加的加法器難以勝任將n各位積一次相加起來的運算。早期計算機中為了簡化硬件結構,采用串行的1位乘法方案,即多次執(zhí)行“加法—移位”操作來實現(xiàn)。這種方法并不需要很多器件。然而串行方法畢竟太慢,自從大規(guī)模集成電路問世以來,出現(xiàn)了各種形式的流水式陣列乘法器,它們屬于并行乘法器。第64頁,課件共164頁,創(chuàng)作于2023年2月2.不帶符號的陣列乘法器設有兩個不帶符號的二進制整數:

A=am-1…a1a0B=bn-1…b1b0

它們的數值分別為a和b,即

m-1

n-1

a

=∑ai2i

b

=∑bj2j

i=0

j=0

在二進制乘法中,被乘數A與乘數B相乘,產生m+n位乘積P:P=pm+n-1…p1p0乘積P

的數值為

第65頁,課件共164頁,創(chuàng)作于2023年2月

實現(xiàn)這個乘法過程所需要的操作和人們的習慣方法非常類似:第66頁,課件共164頁,創(chuàng)作于2023年2月

上述過程說明了在m位乘n位不帶符號整數的陣列乘法中“加法—移位”操作的被加數矩陣。每一個部分乘積項(位積)aibj叫做一個被加數。這m×n個被加數

{aibj|0≤i≤m-1和0≤j≤n-1}可以用m×n個“與”門并行地產生。由此說明設計高速并行乘法器的基本問題,就在于縮短被加數矩陣中每列所包含的1的加法時間。下圖是一個5×5(m×n)不帶符號的陣列乘法器的邏輯電路圖:第67頁,課件共164頁,創(chuàng)作于2023年2月第68頁,課件共164頁,創(chuàng)作于2023年2月第69頁,課件共164頁,創(chuàng)作于2023年2月

這種乘法器要實現(xiàn)n位×n位時,需要n(n-1)個全加器和n2個“與”門。該乘法器的總的乘法時間可以估算如下:令Ta為“與門”的傳輸延遲時間,Tf為全加器(FA)的進位傳輸延遲時間,假定用2級“與非”邏輯來實現(xiàn)FA的進位鏈功能,那么我們就有:Ta

Tf

=2T從上圖可知,最壞情況下延遲途徑,即是沿著矩陣最右邊的對角線和最下面的一行。因而得n位×n位不帶符號的陣列乘法器總的乘法時間為:

tm=Ta+(n-1)×6T+(n-1)×Tf

=2T+(n-1)×6T+(n-1)×2T

=(8n-6)T第70頁,課件共164頁,創(chuàng)作于2023年2月[例16]已知兩個不帶符號的二進制整數A

=11011,B

=10101,求每一部分乘積項aibj的值與p9p8……p0的值。[解:]P=p9p8p7p6p5p4p3p2p1p0=1000110111(56710)a4b0=1a3b0=1a2b0=0a1b0=1a0b0=1a4b1=0a3b1=0a2b1=0a1b1=0a0b1=0a4b2=1a3b2=1a2b2=0a1b2=1a0b2=0a4b3=0a3b3=0a2b3=0a1b3=0a0b3=0a4b4=1a3b4=1a2b4=0a1b4=1a0b4=1第71頁,課件共164頁,創(chuàng)作于2023年2月3.帶符號的陣列乘法器

(1)對2求補器電路我們先來看看算術運算部件設計中經常用到的求補電路。下圖示出一個具有使能控制的二進制對2求補器電路,其邏輯表達式如下:

C-1=0,

Ci=ai+Ci-1ai*=ai⊕ECi-1,

0≤i≤n第72頁,課件共164頁,創(chuàng)作于2023年2月第73頁,課件共164頁,創(chuàng)作于2023年2月

在對2求補時,要采用按位掃描技術來執(zhí)行所需要的求補操作。令A=an…a1a0是給定的(n+1)為帶符號的數,要求確定它的補碼形式。進行求補的方法就是從數的最右端a0開始,由右向左,直到找出第一個“1”,例如ai=1,0≤i≤n。這樣,ai以左的每一個輸入位都求反,即1變0,0變1。最右端的起始鏈式輸入C-1必須永遠置成“0”。當控制信號線E為“1”時,啟動對2求補的操作。當控制信號線E為“0”時,輸出將和輸入相等。顯然,我們可以利用符號位來作為控制信號。第74頁,課件共164頁,創(chuàng)作于2023年2月例如,在一個4位的對2求補器中,如果輸入數為1010,那么輸出數應是0110,其中從右算起的第2位,就是所遇到的第一個“1”的位置。用這種對2求補器來轉換一個(n+1)位帶符號的數,所需的總時間延遲為

tTC=n·2T+5T=(2n+5)T

其中每個掃描級需2T延遲,而5T則是由于“與”門和“異或”門引起的。第75頁,課件共164頁,創(chuàng)作于2023年2月(2)帶符號的陣列乘法器下圖是(n+1)×(n+1)位帶求補器的陣列乘法器邏輯方框圖。通常,把包括這些求補級的乘法器又稱為符號求補的陣列乘法器。在這種邏輯結構中,共使用三個求補器。其中兩個算前求補器的作用是:將兩個操作數A和B在被不帶符號的乘法陣列(核心部件)相乘以前,先變成正整數。而算后求補器的作用則是:當兩個輸入操作數的符號不一致時,把運算結果變成帶符號的數。第76頁,課件共164頁,創(chuàng)作于2023年2月第77頁,課件共164頁,創(chuàng)作于2023年2月

上面所示的帶求補級的陣列乘法器既適用于原碼乘法,也適用于間接的補碼乘法。不過在原碼乘法中,算前求補和算后求補都不需要,因為輸入數據都是立即可用的。而間接的補碼陣列乘法卻需要增加三個硬件求補器。為了完成所必需的求與乘法操作,時間大約比原碼陣列乘法增加1倍。實際上我們可以看到帶符號的陣列乘法器其內部仍是一個基本的源碼陣列乘法器,只是對輸入的補碼數據在乘前進行了值還原,同時在乘后再次將乘積數轉換為補碼形式輸出。第78頁,課件共164頁,創(chuàng)作于2023年2月例17]設x=+15,y=-13,用帶求補器的原碼陣列乘法器求出乘積x·y=?[解:]

設最高位為符號位,則輸入數據為

[x]補=01111[y]補=10011符號位單獨考慮,經過算前求補級后

|x|=1111,|y|=1101第79頁,課件共164頁,創(chuàng)作于2023年2月算后經求補級輸出并加上乘積符號位1,

乘積的補碼值為100111101。則原碼乘積值為111000011。

換算成二進制數真值是x·y=(-11000011)2=(-195)10

十進制數驗證:x×y=15×(-13)=-195相等。第80頁,課件共164頁,創(chuàng)作于2023年2月2.3.2補碼乘法

1.補碼與真值的轉換公式

補碼乘法因符號位參與運算,可以完成補碼數的“直接”乘法,而不需要求補級。這種直接的方法排除了較慢的對2求補操作,因而大大加速了乘法過程。首先說明與直接的補碼乘法相聯(lián)系數學特征。對于計算補碼數的數值來說,一種較好的表示方法是使補碼的位置數由一個帶負權的符號和帶正權的系數。今考慮一個定點補碼整數[N]補=an-1an-2…a1a0,這里an-1是符號位。根據[N]補的符號,補碼數[N]補和真值N的關系可以表示成:第81頁,課件共164頁,創(chuàng)作于2023年2月

n-2

+∑ai2i當an-1

=0([N]補為正)

N=

i=0

n-2

-[1+∑(1-ai)2i]當an-1

=1([N]補為負)

i=0

如果我們把負權因數-2n-1強加到符號位an-1上,那么就可以把上述方程組中的兩個位置表達式合并成下面的統(tǒng)一形式:

n-2

N

=-an-12n-1+∑ai2i

i=0

n-2

-N

=-(1-an-1)2n-1+∑(1-ai)2i+1

i=0

第82頁,課件共164頁,創(chuàng)作于2023年2月2.一般化的全加器形式常規(guī)的一位全加器可假定它的3個輸入和2個輸出都是正權。這種加法器通過把正權或負權加到輸入/輸出端,可以歸納出四類加法單元。如下表,0類全加器沒有負權輸入;1類全加器有1個負權輸入和2個正權輸入;依次類推。對0類、3類全加器而言有:對1類、2類全加器,則有第83頁,課件共164頁,創(chuàng)作于2023年2月表2.3四類一般化全加器的名稱和邏輯符號第84頁,課件共164頁,創(chuàng)作于2023年2月

注意,0類和3類全加器是用同一對邏輯方程來表征的,它和普通的一位全加器(0類)是一致的。這是因為3類全加器可以簡單地把0類全加器的所有輸入輸出值全部反向來得到,反之亦然。1類和2類全加器之間也能建立類似的關系。由于邏輯表達式具有兩級與-或形式,可以用“與或非”門來實現(xiàn),延遲時間為2T。第85頁,課件共164頁,創(chuàng)作于2023年2月3.直接補碼陣列乘法器

利用混合型的全加器就可以構成直接補碼數陣列乘法器。設被乘數A和乘數B是兩個5位的二進制補碼數,即

A=(a4)a3a2a1a0B=(b4)a3a2a1a0它們具有帶負權的符號位a4和b4,并用括號標注。如果我們用括號來標注負的被加項,例如(aibJ),那么A和B相乘過程中所包含的操作步驟如下面矩陣所示:第86頁,課件共164頁,創(chuàng)作于2023年2月A

=(a4)

a3

a2

a1

a0

B=×

(b4)

b3

b2

b1

b0

——————————————————————

(a4b0)

a3b0

a1b0

a1b0

a0b0

(a4b1)a3b1a2b1

a1b1

a0b1

(a4b2)a3b2

a2b2

a1b2

a0b2

(a4b3)

a3b3

a2b3

a1b3

a0b3

+)a4b4(a3b4)(a2b4)(a1b4)(a0b4)

P=p9

p8

p7

p6

p5

p4

p3p2

p1

p0第87頁,課件共164頁,創(chuàng)作于2023年2月第88頁,課件共164頁,創(chuàng)作于2023年2月

上圖所示是5位乘5位的直接補碼陣列乘法器邏輯原理,其中使用不同的邏輯符號來代表0類、1類、2類、3類全加器。2類和1類全加器具有同樣的結構,但是使用不同的邏輯符號可使乘法陣列的線路圖容易理解。該實現(xiàn)方式稱為三段陣列乘法器,其中右上角的三角形中只用0類全加器,左上角的三角形只用1類全加器,陣列的最后兩行只用2類全加器。

第89頁,課件共164頁,創(chuàng)作于2023年2月第90頁,課件共164頁,創(chuàng)作于2023年2月其中使用不同的邏輯符號來代表0類、1類、2類、3類全加器。2類和1類全加器具有同樣的結構,但是使用不同的邏輯符號可使乘法陣列的線路圖容易理解。在n位乘n位的一般情況下,該乘法器需要(n-2)2個0類全加器,(n-2)個1類全加器,(2n-3)個2類全加器,1個3類全加器,總共是n(n-1)個全加器。故所需的總乘法時間是:

tp=Ta+2(n-1)Tf=2T+(2n-2)2T=(4n-2)T(2.31)第91頁,課件共164頁,創(chuàng)作于2023年2月[例20]

設[A]補=(01101)2,[B]補=(11011)2,求[A×B]補=?[解:]

(0)1

1

0

1=+13

×)

(1)1

0

1

1=-5

(0)1

1

0

1

(0)1

1

0

1

(0)0

0

0

0

(0)1

1

0

1

0(1)(1)(0)(1)

0(1)0

1

1

1

1

1

1

(1)10

1

1

1

1

1

1=-65

擴展符號位符號位驗證:

-1×27+0×26+1×25+1×24+1×23+1×22+1×21+1×20

=-128+(32+16+8+4+2+1)

=-65

(13)×(-5)=-65第92頁,課件共164頁,創(chuàng)作于2023年2月2.4

定點除法運算

2.4.

溫馨提示

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

評論

0/150

提交評論