【計算機原理課件】計算機的定義和特性_第1頁
【計算機原理課件】計算機的定義和特性_第2頁
【計算機原理課件】計算機的定義和特性_第3頁
【計算機原理課件】計算機的定義和特性_第4頁
【計算機原理課件】計算機的定義和特性_第5頁
已閱讀5頁,還剩161頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第一章概述

1.1計算機的定義和特性

1.1.1什么是計算機

?計算機是一種能對數(shù)字化信息進行自

動高速運算的通用處理裝置。

?信息運算處理

1.1.2計算機的特性

?計算機的特性可以歸納為高速、通用、準確、

智能四大特性。

1.2計算機的發(fā)展歷程

1.2.1電子計算機的誕生

?第一*臺電子計算機ENIAC(ElectronicNumerical

IntegratorandComputer)于1946年在美國誕生。

①每秒5000次加法運算;

②每秒50次乘法運算;

③平方和立方計算;

④Sin和Cos函數(shù)數(shù)值運算;

⑤其它更復雜的計算。

1.2.2第一代計算機

(20世紀40年代中到50年代末)

?第一代計算機為電子管計算機,其邏輯元件采用電子

管,存儲器件為聲延遲線或磁鼓,典型邏輯結(jié)構(gòu)為定

點運算。計算機“軟件”一詞尚未出現(xiàn),編制程序所

匯縣豹彳雅弗意十算機(50年代中后期到60年代中)

?第二代計算機為晶體管計算機。這一代計算機除了邏

輯元件采用晶體管以外,其內(nèi)存儲器由磁芯構(gòu)成,磁

鼓與磁帶成為外存儲器。

?計算機典型邏輯結(jié)構(gòu)實現(xiàn)了浮點運算,

并提出了變址、中斷、I/O處理等新概念。

計算機軟件也得到了發(fā)展,出現(xiàn)了多種

高級語言及其編譯程序。

1.2.4第三代計算機(60年代中到70年代中)

?第三代計算機為集成電路計算機,其邏輯元件與存儲器

均由集成電路實現(xiàn),這是微電子與計算機技術(shù)相結(jié)合的

一大突破。微程序控制、高速緩存、虛擬存儲器、流水

線等先進計算機技術(shù)開始使用。另一大特點是大型/巨

型機與小型機同時發(fā)展。

1.2.5第四代計算機(70年代中期開始一)

?大規(guī)模(LSI)和超大規(guī)模(VLSI)集成電路

及微處理器為這一代計算機的典型特征。

?并行處理技術(shù)的研究與應用以及眾多巨型機的產(chǎn)生也成

為這一時期計算機發(fā)展的特點。

?四代機時期的一個重要特點是計算機網(wǎng)絡的發(fā)展與廣泛

應用。

1.2.6新一代計算機

?新器件和非馮?諾依曼結(jié)構(gòu)已成為新一代計算機的公認

標志。

1.3計算機的組成與結(jié)構(gòu)

1.3.1計算機系統(tǒng)的層次結(jié)構(gòu)

圖L1計算機系統(tǒng)層次結(jié)構(gòu)

1.3.2計算機硬件

?計算機硬件是指構(gòu)成計算機的元器件、

部件、設(shè)備、以及它們的設(shè)計與實現(xiàn)技術(shù)。

■馮?諾依曼計算機的主要特點:

1)計算機由運算器、存儲器、控制器和輸入/輸出五個

部件組成。

圖1.2計算機基本組成

本書討論的范圍涉及第0、1、2共3層,

主要內(nèi)容如下:

1.高速的算術(shù)、邏輯運算方法及ALU的

邏輯設(shè)計;

2.高速的指令執(zhí)行過程及指令部件的設(shè)計與實現(xiàn),

是采用組合邏輯技術(shù)、或微程序設(shè)計技術(shù),還是

PLA技術(shù);是復雜指令集計算機(CISC),還是

精簡指令集計算機(RISC);

3.提高存儲器容量與速度的方法,以及如何解決

“CPU-Cache-外存”之間的匹配問題;

4.高效率的輸入/輸出方法、組織,以及它們之間的

互聯(lián)技術(shù);

5.計算機五大部件(運算器、控制器、存儲器、輸入

和輸出)之間的相互作用、高效接口(總線);

2)存儲器以二進制形式存儲指令和數(shù)據(jù);

3)存儲程序工作方式;

4)五部件以運算器為中心進行組織;

1.3.3計算機軟件

1.軟件的作用

?一般來說,計算機的工作總是由存儲程序來控制的。

?軟件的具體作用為:

①在計算機系統(tǒng)中起著指揮和管理的作用。

②是計算機用戶和硬件的接口界面。

③是計算機體系結(jié)構(gòu)設(shè)計的主要依據(jù)。

2.軟件的發(fā)展過程

?三個階段:

1)從第一臺計算機上的第一個程序出現(xiàn)到

實用的高級語言出現(xiàn)為第一階段(1946-1956年)。

2)從實用的高級程序設(shè)計語言出現(xiàn)到軟件工程出現(xiàn)

以前為第二階段(1956-1968年)。

3)軟件工程出現(xiàn)以后迄今一直為第三階段(1965—)。

3.軟件的分類

①系統(tǒng)軟件:操作系統(tǒng)、編譯程序。

②支撐軟件:數(shù)據(jù)庫、各類接口軟件和工具組。

③應用軟件:

1.4計算機的分類與應用

1.4.1計算機的分類

?按計算機所處理對象的表示形式不同可以

分成模擬計算機與數(shù)字計算機兩類。

?計算機按其用途來分可以分成專用機和通用機兩類。

其中,通用計算機按其規(guī)模、性能和價格來分,又

可分為巨型機、大型機、小型機、工作站、微型機

等多種類型。

1.4.2計算機應用

計算機信息處理技術(shù)包括了對各種信息媒體的獲取、

表示、加工與表現(xiàn)方法和技術(shù),大致有以下幾個方

面內(nèi)容:

1.語言與文字的處理。

2.計算機圖形學與數(shù)字圖象處理。

3.多媒體技術(shù)。

4.計算機輔助技術(shù)。

5.計算機信息系統(tǒng)。

6.計算機控制。

?計算機應用技術(shù)的發(fā)展方向為集成化、網(wǎng)絡化、智能化

第2章數(shù)據(jù)的表示

?本章討論在計算機內(nèi)部各類基本數(shù)據(jù)

的表示方法及其相互間的等值轉(zhuǎn)換。

2.1數(shù)據(jù)、信息和媒體

2.1.1數(shù)據(jù)

?數(shù)據(jù)是對事實、概念或指令的一種特殊表達形式,

這種特殊的表達形式可以用人工的方式或者用自動

化的裝置進行通信、翻譯轉(zhuǎn)換或者進行加工處理。

?在計算機系統(tǒng)中所指的數(shù)據(jù)均是以二進制編碼形式

出現(xiàn)的。

?計算機內(nèi)部由硬件實現(xiàn)的基本數(shù)據(jù)區(qū)分為數(shù)值型數(shù)

據(jù)和非數(shù)值型數(shù)據(jù)。

2.1.2信息

?信息是對人有用的數(shù)據(jù),這些數(shù)據(jù)可能影響

到人們的行為和決策。

?信息是對數(shù)據(jù)的解釋,數(shù)據(jù)是信息的載體。

?計算機信息處理,實質(zhì)上就是由計算機進行數(shù)據(jù)處理

的過程。

2.1.3媒體

?媒體又稱媒介、媒質(zhì),是指承載信息的載體。

?與計算機信息處理有關(guān)的媒體有5種:

感覺媒體表示媒體

存儲媒體表現(xiàn)媒體傳輸媒體

圖2.1計算機外部信息與內(nèi)部數(shù)據(jù)的轉(zhuǎn)換

2.2數(shù)字化信息編碼

?所謂編碼,就是用少量簡單的基本符號,對

大量復雜多樣的信息進行一定規(guī)律的組合。

息,都是用二進制進行編碼的。

?計算機內(nèi)部采用二進制表示的原因:

1)二進制只有兩種狀態(tài),在數(shù)字電路中很容易實現(xiàn)。

2)二進制編碼、運算規(guī)則非常簡單。

3r二比的"o”、“1”與二值邏輯一致,很容易實現(xiàn)

邏輯送直。

2.3數(shù)值數(shù)據(jù)的編碼表示

?數(shù)值數(shù)據(jù)是表示數(shù)量多少和數(shù)值大小的數(shù)據(jù)。

?在計算機內(nèi)部,數(shù)值數(shù)據(jù)的表示方法有兩大類:第一

種是直接用二進制數(shù)表示;另一種是采用二進制編碼的

十進制數(shù)(BinaryCodedDecimalNumber,簡稱BCD)

表示。

?表示一個數(shù)值數(shù)據(jù)要確定三個要素:進位計數(shù)制、

定/浮點表示和數(shù)的編碼表示。

2.3.1進位計數(shù)制及其各進位制數(shù)之間的轉(zhuǎn)換

?在某個數(shù)字系統(tǒng)中,若采用R個基本符號(0,1,

2,??.,R-1)表示各位上的數(shù)字,則稱其為基R

數(shù)制,或稱R進制數(shù)字系統(tǒng),R被稱為該數(shù)字系統(tǒng)的基,

采用“逢R進一”的運算規(guī)則,對于每一個數(shù)位i,其

公7二臺片£7*D1

?在計算機系統(tǒng)中,常用的幾種進位計數(shù)制

有下列幾種:

二進制R=2,基本符號為0和1

八進制R=8,基本符號為0,1,2,3,4,5,6,7

十六進制R=16,基本符號為0,1,2,3,4,5,6,7,8,9,

A,B,C,D,E,F

十進制R=10,基本符號為0,1,2基本,5,6為,8,9

例:十進制數(shù)2585.62代表的實際值是

2xl03+5xl02+8xl01+5xl0°+6xl0-1+2xl0-2

例:二進制數(shù)(100101.01)2代表的實際值是:

(100101.01)=lx25+0x24+0x23+lx22+0x21+

L9a

1x20+0x2T+卜2一2=(37.25)10

1.R進制數(shù)轉(zhuǎn)換成十進制數(shù)

?任何一個R進制數(shù)轉(zhuǎn)換成十進制數(shù)時,只要

“按權(quán)展開”即可。

例1二進制數(shù)轉(zhuǎn)換成十進制數(shù)。

432

(10101.01)9=(1X2+0X2+1X2+0X21+1X2°+

12

OX2-+1X2-)10=(21.25)10

例2八進制數(shù)轉(zhuǎn)換成十進制數(shù)。

21

(307.6)8=(3X8+7X8°+6X8-)10=(199.75)10

例3十六進制數(shù)轉(zhuǎn)換成十進制數(shù)。

-1

(3A.C)=(3XIG^IOX160+12X16)10

=(58.75)10

2.十進制數(shù)轉(zhuǎn)換成R進制數(shù)

?任何一個十進制數(shù)轉(zhuǎn)換成R進制數(shù)時,要將

整數(shù)和小數(shù)部分分別進行轉(zhuǎn)換。

(1)整數(shù)部分的轉(zhuǎn)換

?整數(shù)部分的轉(zhuǎn)換方法是“除基取余,上右下左”

例1將十進制整數(shù)835分別轉(zhuǎn)換成二、八進制數(shù)。

余數(shù)低位

88353?

81040

8135

811

0高位

(835)io=(15O3)8

余數(shù)低位

28351▲

2|4171

22080

2I~W4-0

2520

2260

2131

260

2I~3^..........1

1

0高位

(835)10=(1101000011)2

(2)小數(shù)部分的轉(zhuǎn)換

?小數(shù)部分的轉(zhuǎn)換方法是

“乘基取整,上左下右”。

例2將十進制小數(shù)0.6875分別轉(zhuǎn)換成二、八進制數(shù)。

整數(shù)部分高位

0.6875X2=1.3751

0.375X2=0.750

0.75X2=1.51

0.5X2=1.01

低位

(0.6875)io=(O.1011)2

整數(shù)部分高位

0.6875X8=5.55

0.5X8=4.04

(0.6875)io=(O.54)8

低位

例3將十進制小數(shù)0.63轉(zhuǎn)換成二進制數(shù)。

整數(shù)部分高位

0.63X2=1.261

0.26X2=0.520

0.52X2=1.041

0.04X2=0.080

(0.63)io=(O.1010)2(近似值)低位

(3)含整數(shù)、小數(shù)部分的數(shù)的轉(zhuǎn)換

?只要將整數(shù)、小數(shù)部分分別進行轉(zhuǎn)換,得

到轉(zhuǎn)換后的整數(shù)和小數(shù)部分,然后再這兩

部分組合起來得到一個完整的數(shù)。

例4將十進制數(shù)835.6875轉(zhuǎn)換成二、八進制數(shù)。

(835.6875)io=(1101000011.1011)2=(1503.54)8

3.二、八、十六進制數(shù)的相互轉(zhuǎn)換

(1)八進制數(shù)轉(zhuǎn)換成二進制數(shù)

例1將(13.724)8轉(zhuǎn)換成二進制數(shù)

(13.724)8=(001011.111010100)2

=(1011.1110101)2

(2)十六進制數(shù)轉(zhuǎn)換成二進制數(shù)

例2將十六進制數(shù)2B.5E轉(zhuǎn)換成二進制數(shù)

(2B.5E)16=(00101011.01011110)2

=(101011.0101111)2

(3)二進制數(shù)轉(zhuǎn)換成八進制數(shù)

(10011.01)2=(010011.010)2=(23.2)8

(4)二進制數(shù)轉(zhuǎn)換成十六進制數(shù)

(11001.11)2=(00011001.1100)2

=(19.C)16

2.3.2定點與浮點表示

1.定點表示

?所謂定點表示是約定計算機中所有數(shù)據(jù)的小數(shù)點

位置是固定不變的。該位置在計算機設(shè)計時已被隱含地

規(guī)定,因此勿需再用任何硬件設(shè)備狀態(tài)來明顯表示小數(shù)點C

±1010110

小數(shù)點位置(隱含約定)

±1010001

Ab

方野位置(隱含

利用定點表示進行計算,須將所有數(shù)據(jù)之

值按一定比例予以縮?。ɑ蚍糯螅┖笏腿?/p>

計算機,同時須將計算結(jié)果以同一比例增

大(或縮?。┖蟛拍艿谜_結(jié)果值。

由于采用定點數(shù)表示數(shù)的范圍較小,因此運算很容易

產(chǎn)生溢出,另外選擇適當?shù)谋壤蜃佑袝r也很困難。

2.浮點表示

在計算機中所表示的數(shù),其小數(shù)點位置是可變的,這

種數(shù)稱為浮點數(shù)。

WTXTWeMWm

對于任意一個二進制數(shù)X,可以表示成

如下形式:

E

X=±MXR

其中:M為尾數(shù),常用定點純小數(shù)表示;E為階,一般

用定點整數(shù)表示;R為基數(shù),隱含為2,也可以為2。,

q可取2,3,4等正整數(shù)。

|Nmax|=(l-2-m)X2(2e-1)Nmin=2』*2一*一

上溢區(qū)下溢區(qū)上溢區(qū)

負數(shù)區(qū)正數(shù)區(qū)

0

?浮點表示法的最大特點是它可以表示

很大的數(shù)據(jù)范圍以及較高的數(shù)據(jù)精度。

2.3.3編碼系統(tǒng)

?確定一個數(shù)值數(shù)據(jù)的三要素是:進位計數(shù)制、

定點/浮點表示和編碼表示。它們分別用來解決數(shù)值

數(shù)據(jù)的基本表示符號、小數(shù)點位置和數(shù)的正負號表示。

?符號數(shù)字化:。表示正號,1表示負號。

機器數(shù):數(shù)值數(shù)據(jù)在計算機內(nèi)部編碼表示的數(shù)。

真值:機器數(shù)真正的值(即:原來帶有正負號的數(shù))。

?機器數(shù)X的真值為:

XT=±X「Xn-2'…Xl'Xo'

(當X為定點整數(shù)時)

XT=±0.X_l'X_2'??.X_(n—l)'X—n'

(當X為定點小數(shù)時)

數(shù)字化編碼后的機器數(shù)X表示為:

X=XnXn-1Xn-2??.X1X0

?常用的編碼表示方式有三種:原碼、補碼和反碼。

對于這三種編碼:正數(shù)的所有編碼表示都是相同的。

其結(jié)果總是:符號位取值為3數(shù)值部分保持不變。

負數(shù)的所有編碼表示,其符號位總是為1,而數(shù)值

部分對于不同的編碼則有不同的取值。

1.原碼表示法

?原碼表示的機器數(shù)由符號位后直接跟上

真值的數(shù)值構(gòu)成。

定點小數(shù):

rx1>%>0

[x]原二<

、1-xO>x>-1

[+0]=0.00???0

[-0]=1.00???0

定點整數(shù):

X當>x>0

r

[x]原=<

\2rx當o\x>-2n-1

例:

[+noi]原=onoi

[―1101]原=inoi

原碼表示的優(yōu)點是與真值的對應關(guān)系直觀、方便,

因此與真值的轉(zhuǎn)換簡單,并且用原碼實現(xiàn)乘除運算

比較簡便,但其加/減法運算規(guī)則復雜。

2.補碼表示法

(1)模運算

?“對一個多于n位的數(shù)丟棄高位而保留低n位數(shù)”

至樣一種處理,實際上等價于“將這個多于n位的數(shù)

像以2「,然后丟去商保留其余數(shù)”的操作。這樣一種

我滿足下列關(guān)系:A=B+KM

(K為整數(shù)),則記為:

A=B(modM)。

即:A、B各除以M后的余數(shù)相同,故稱B和A為模M同

余。

?假定現(xiàn)在鐘表時針指向10點,要將它撥向

6點,則有兩種撥法:

①倒撥4格:10-4=6

②順撥8格:10+8三18三6(mod12)

?所以在模12系統(tǒng)中:10-4=10+8(mod12)即:

-4三8(mod12)我們稱8是-4對模我的補碼。同樣有

-3=9(mod12);-5=7(mod12)等等。

結(jié)論:“對于某一確定的模,某數(shù)減去小于模的另一

數(shù),總可以用該數(shù)加上模與另一數(shù)絕對值之差來代替”。

因此,補碼可以用加法實現(xiàn)減法運算。

例1.“鐘表”模運算系統(tǒng)

10-4=10+(12-4)=10+8=6(mod12)

例2.“4位十進制數(shù)”模運算系統(tǒng)(相當于只

有四檔的算盤)

/4\

9828-1928=9828+(10-1928)

=9828+8072

三7900(mod104)

(2)補碼的定義

定點小數(shù):

rxl>X>0

_X]補二Y

、2+x0>x>-l

定點整數(shù):

X當2『1>X>0

r

_x]補=<

、2n+x當0>xN-2n-1

補碼0的表示是唯一的:

[+0]補=00…0

[-0]補=2n-0=100…0=00…。(mod2n)

對于整數(shù)補碼有:[T]補=2n-l=ir-l(n個1)

對于小數(shù)補碼有:[T]補=2-1=1.00…0(n-1個0)

例.設(shè)補碼的位數(shù)為6,求負數(shù)-0.10110

的補碼表示。

[-0.10110]補=2-0.10110

=10.00000-0.10110

=1.01010

?求負數(shù)補碼的簡單方法:“符號位固定為1,其余各位

由真值中相應各位取反后,末尾加1所得。”

岫補碼求真值的簡便方法:“若符號位為1,則真值的

號為負,其數(shù)值部分的各位由補碼中相應各位取反后,

末尾加1所得?!?/p>

?求一個補碼“取負”后的補碼表示方法:

“只要對該已知補碼各位取反,末尾加1即可?!?/p>

?由[x]求[,X]的方法:將[x]n的符號位和數(shù)值位

一起向右扁]一位,符號位移走后還保持原來的值不變。

例L已知:XT=-0.1011010,求[XT]補。

[XT]#=1.0100101+0.0000001

=1.0100110

例2.已知:[XT]補=1011010,求XT。

XT=-100101+1=-100110

例3.已知:[XT]補=1011010,求[-XT]補

[-XT]#=0100101+1=0100110

例4.設(shè)[x]補=L0101000,則

[j]補=1.1010100

耳燈補=1.noioio

[1x]補=i.nioioi

第3章運算器與運算方法

?運算器部件是計算機中的執(zhí)行部件,它可以對二進

制數(shù)據(jù)進行各種算術(shù)和邏輯運算;

?運算器也是計算機內(nèi)部數(shù)據(jù)信息的重要通路。

?本章重點介紹運算器的核心部件—算術(shù)邏輯運算

單元ALU的組成與工作原理,以及數(shù)據(jù)在運算器的

基本運算方法。

3.1基本組成

1.算術(shù)邏輯運算單元ALU

▲運算器實現(xiàn)了對計算機中數(shù)據(jù)的加工處理;包括數(shù)

值數(shù)據(jù)的算術(shù)運算和邏輯數(shù)據(jù)的邏輯操作。

▲運算器中完成數(shù)里算術(shù)與邏輯運算的部件稱之為算

術(shù)與邏輯運算單元(ArithmeticandLogicUnit,簡

稱ALU)oALU是運算器的核心。

▲ALU通常表示為兩個輸入端口,一個輸出端口和多

個功能控制信號端的這樣的一個邏輯符號。

控制信號

圖3.1ALU的邏輯符號表示與多路開關(guān)

2.通用寄存器組

▲運算器內(nèi)設(shè)有若干通用寄存器,構(gòu)成通用寄存器組;

用于暫時存放參加運算的數(shù)據(jù)和某些中間結(jié)果。

?通用寄存器的數(shù)量越多,對提高運算器性能和程序

執(zhí)行速度越有利。

?通用寄存器組是對用戶開放的,用戶可以通過指令

去使用這些寄存器。

▲在運算器中用來提供一個操作數(shù)并存放運算結(jié)果的

通用寄存器稱作為累加器。

?如:ADDA,Rj

3.專用寄存器

▲運算器需要記錄下指令執(zhí)行過程中的重要狀態(tài)標記,

以及提供運算前后數(shù)據(jù)的暫存緩沖等,這通過在運

算器中設(shè)置若干專用寄存器來實現(xiàn)。

.循環(huán)計數(shù)器對程序員是透明的。

?程序狀態(tài)字PSW(ProgramStatusWord),它存放著

指令執(zhí)行結(jié)果的某些狀態(tài);如是否溢出、是否為零、

是否有進位/借位、是否為負等。它對程序員是開放

的。

?堆棧指針SP(StackPointer),它指示了堆棧的使用情

況。

4.附加的控制線路

▲在運算器中附加一些控制線路;以達到運算

速度快,運算精度高的目的,。

?如:運算器中的乘除運算和某些邏輯運算是通過移

位操作來實現(xiàn)的。在ALU的輸出端設(shè)置移位線路來

實現(xiàn)左移、右移和直送。

?移位線路是一個多路

選擇器。

?圖3.2實現(xiàn)移位功能的多

路選擇器

FiFi+i

3.2算術(shù)與邏輯單元

3.2.1半加器與全加器

?運算器中各種運算都是分解成加法運算進行的,因

此加法器是計算機中最基本的運算單元。

1.半加器

▲兩個一位二進制數(shù)相加(不考慮低位的進位),稱為半

力口。實現(xiàn)半加操作的電路,稱為半加器。

表3.1半加運算的真值表

XiXHiG

0000

0110珥G

1010

1101HA

▲表3.1是兩個一位二

進制數(shù)X「X相加的xjX

真值表,居和G的邏圖3.3(a)邏輯圖(b)符號表示

輯表達式如下:

Hi=xz+xz£=X]

2.全加器

▲考慮低位進位的加法運算就是全加運算,實現(xiàn)全加

運算的電路稱為全加器。

▲根據(jù)真值表表3.2表3.2全加運算的真值表

XiYiCM3Ci

可寫出居和Cj的邏00000

輯表達式:01010

10010

11001

00110

01101

10101

11111

K=QCt+XZGT+XXGT+X/Ci=X]十X十

G=xyCi+QCt+XKGT+XZCT=(X十X)GT+MX

▲實現(xiàn)邏輯表達式的全加器邏輯圖和全加器的符號表示

3.2.2串行進位與并行進位

?n個全加器相連可得n位的加法器;圖3.5是串行進位

或行波進位加法器。

圖3.5n位加法器

?先行進位或并行進位加法器

?預先形成各位進位,將進位信號同時送到各位全加

器的進位輸入端。

▲就4位加法器,討論一下其進位C2>C3和C4的產(chǎn)

生條件:

①下述條件中任一條滿足就可生成C1=1:

1)X。Y1均為“1”;

2)Yi任一個為“1%且進位Co為T。

?可得Ci的表達式為:

G=X]Yi+(Xi)Co

②下述條件中任一條滿足,就可生成C2=l。

1)x2>丫2均為“1”;

2)X2>丫2任一個為“1”,且進位C1為T。

?可得C2的表達式為:

C2=X2Y2+(X2+Y2)C1

=X2Y2+(X2+Y2)X1Y1+(X2+Y2)(X1+Y1)CO

③同理,可得C3的表達式為:

C3=X3Y3+(X3+Y3)C2

=X3Y3+(X3+Y3)[X2Y2+(X2+Y2)X1Y1+

區(qū)+丫2)區(qū)+丫1)0]

=X3Y3+(X3+Y3)X2Y2+(X3+Y3)(X2+Y2K1Y1+

(X3+Y3)(X2+Y2)(XI+YI)CO

④同理,可得的表達式為:

C4=X4Y4+(X4+Y4)c3

=X4Y4+(X4+Y4)[X3Y3+(X3+Y3)X2Y2+

(X3+Y3)(X2+Y2)X1Y1+(X3+Y3)(X2+Y2)(X1+Y1)CO]

=X4Y4+(X4+Y4)X3Y3+(X4+Y4)(X3+Y3)X2Y2+

(X4+Y4)(X3+Y3)(X2+Y2)X1Y1+

(X4+Y4)(X3+Y3)(X2+Y2)(X1+Y1)C0

▲定義兩個輔助函數(shù):

Pi=Xi+K

Gi=XiX

?Pi表示進位傳遞函數(shù),當x「X中有一個為“1”時,

若有低位進位輸入,則本位向高位傳送進位。

?G表示進位產(chǎn)生函數(shù),當X「X均為“1”時,不管有

無低位進位輸入,本位一定向高位產(chǎn)生進位輸出。

▲將P「G代入前面的C]?C4式,可得:

G=G1+P(o

C2=G2+P2G1+P2PxC0

C3=G3+P3G2+P3P2G1+P3P2P1O

C4=G4+P4G3+P4P3G2+P4P3P2&+P4P3P2P?

▲“先行進位產(chǎn)生電路”(圖3.6(a))及“4位先行進

位加法器”的邏輯圖(圖3.6(b))

P4G3P3G2P2GiPi

圖3.6(a)先行進位產(chǎn)生電路

圖3.6(b)4位先行進位加法器

▲四個4位先行進位加法器串接起來構(gòu)成16位加法器

?在各加法單元之間,進位信號是串行傳送的,而在

加法單元內(nèi),進位信號是并行傳送的。

F16-13F12-9^8-5^4-1

/\AAA

圖3.7組間為串行進位構(gòu)成的16位加法器

▲并行進位的概念可用于16位加法器;進一步提高16

位加法器的運算速度。

-Cm=Gm+PmC0

?Cm表示4位加法器的進位輸出,Pm表示4位加法器的

進位傳遞輸出,Gm表示4位加法器的進位產(chǎn)生輸出。

?Pm和Gm分別為:

Pm=P4P3P2Pl

Gm=G4+P4G3+P4P3G2+P4P3P2Gl

?應用于四個4位先行進位加法器,則有:

Cmi=Gml+PmlC0

Cm2—Gmz+Pfn2cmi

=Gm2+Pm2Gmi+「m2Pmico

Cm3—Gm3+Pm3cm2

=Gm3+Pm3Gm2+P1n3Pm2Gmi+Pm3^m2^ml^O

Cm。Gm4+Pm4cm3

=Gm4+Pm4Gm3+Pm4Pm3Gm2+

Pm4Pm3Pm2^ml+「m4Pm3Pm2P

X[&]3丫613

圖3.8組間由先行進位鏈構(gòu)成的16位加法器

▲可將并行進位的概念用于更大位數(shù)的加法器上,隨

著加法器位數(shù)的增加,加法電路變得越來越復雜。

3.3定點加、減法運算

■計算機的一個重要特點是它只能用有限的

數(shù)碼位數(shù)來表示操作數(shù)和操作結(jié)果。

?定點加、減法運算只有在遵守模運算規(guī)則的限制條

件下其結(jié)果才是正確的,否則就會出現(xiàn)結(jié)果“溢出”

?制定用來表示正、負數(shù)的各種碼制;通過數(shù)據(jù)編碼

來簡化數(shù)據(jù)的運算,特別是補碼,把加法和減法巧妙

地結(jié)合起來。

331補碼定點加、減法

?補碼制的加、減法運算公式:

[X+Y]補=(兇補+[Y]補)MOD2n

[X?Y]補=([X]補+[.Y]補)MOD2n

?在補碼制方法下,無論X、Y是正數(shù)還是負數(shù),力口、

減法運算統(tǒng)一采用加法來處理;

?盧!亦和M補的符號位和數(shù)值位一起參與求和運算,加、

減運算結(jié)臬的符號位也在求和運算中直接得出。

?例1:已知[X]補=01001,[Y]補=11100;

求補,

[X+Y][X-Y]#o

?則卜Y]補=00100

?[X+Y]補=([X]補+[Y]補)MOD25

=(01001+11100)MOD25

=00101

?因?丫]補=(兇補+[丫]補)MOD25

=(01001+00100)MOD25

=01101

?當算術(shù)運算的結(jié)果超出了數(shù)碼位數(shù)

允許的數(shù)據(jù)范圍時,就產(chǎn)生溢出。

?對于n位的二進制碼表示的補碼整數(shù)(符號位占一

位),它可表示的數(shù)據(jù)范圍為據(jù)5~2口?1?1。

?若結(jié)果超過了允許表示的最大正數(shù)時,產(chǎn)生的溢出稱

為上溢;

?若結(jié)果超過了允許表示的最小負數(shù)時,產(chǎn)生的溢出稱

為下溢。

?在運算器中應設(shè)有溢出判別線路和溢出標志位。

?例2:已知[X]補=01010,[Y]補=01010

[X+Y]補=(01010+01010)MOD25=10100溢出

?[10]10+[10]10=[20]10>15產(chǎn)生上溢

?例3:已知[X]補=10010,[Y]補=00100

5

[X-Y]#=(10010+11100)MOD2=01110溢出

[4]10=[-18]10<-16產(chǎn)生下溢

?溢出常用的判別方法:

①兩個補碼數(shù)實現(xiàn)加、減運算時,若最高數(shù)值位向

符號位的進位值cnj與符號位產(chǎn)生的進位輸出值

。不相同,表明加減運算產(chǎn)生了溢出OVR;

?可以表示為:

OVR='十Cn

OVR=1表示結(jié)果有溢出,OVR=0表示結(jié)果正確。

在例1中,求[X+Y]補時:OVR=Cn.十Cn=l十1=0,結(jié)果正確。

在例2中,求[X+Y]補時:OVR=Ln=l十0=1,結(jié)果溢出。

在例3中,求[X-Y]補時:OVR=%十?冒=0十1=1,結(jié)果溢出。

②常用雙符號位方法來判別加、減法運算是

否有溢出,正數(shù)的雙符號位是00,負數(shù)的

雙符號位是11。

?兩個正數(shù)雙符號位的運算為00+00=00時,結(jié)果不溢出;

?兩個正數(shù)雙符號位的運算為00+00+1=01時,結(jié)果上溢。

?兩個負數(shù)的雙符號位運算為(11+11+1)MOD4=11

時,結(jié)果不溢出;

?兩個負數(shù)的雙符號位的運算為(11+11)MOD4=10

時,結(jié)果下溢。

▲采用模4補碼運算,其運算結(jié)果的兩個符號位不一致

時,產(chǎn)生溢出。

?實現(xiàn)補碼加、減法運算的邏輯電路(圖3.15)

標志寄存器

圖3.15實現(xiàn)補碼加減法運算的邏輯電路

▲它的核心部件是二進制并行加法器F,它接收來自寄

存器X和寄存器Y的兩個操作數(shù)。

▲用圖3.15來實現(xiàn)加法[X+Y]補的邏輯操作步驟

如下:

①[X]補一寄存器X,[Y]補一寄存器Y。

②給出控制信號:X-F=LY.F=L且1.F=O。

[X]補和[Y]補送入加法器F的兩個輸入端。

③并行加法器F接收[X]補和[Y]補,完成[X]補+[Y]補的

加法過程,輸出[X+Y]補,并置溢出、進位等信號到

標志寄存器。

④給出控制信號:F-X=l,加法器F的輸出結(jié)果送入

寄存器X。加法運算結(jié)束。

▲用圖3.15來實現(xiàn)減法[X?Y]補的邏輯操作步驟如下:

①[X]補-寄存器X,[Y]補,寄存器Y。

②給出控制信號:X-F=LY-^F=1o[X]補和五]補

用.濟.2……項送入加法器F的兩個輸入端。

③給出控制信號:1fF=L并行加法器F接收[X]補、

[Y]補和進位信號1,完成[X]補+%.芯.2??…甲)+1=

[X]補+[,]補的加法過程,輸出[X-Y]補,并置溢出、

進位等信號到標志寄存器。

④給出控制信號:F-X=L加法器F的輸出結(jié)果

[X?Y]補送入寄存器X。減法運算結(jié)束。

▲當寄存器X或寄存器Y的內(nèi)容送到加

法器F時,將符號位等值擴充一位,

形成雙符號位;雙符號位只在加法

器中執(zhí)行加法運算時是必要的。

▲寄存器X、寄存器Y和加法器F的二進制位數(shù)對運算

數(shù)據(jù)和運算結(jié)果的大小有限制作用,當超過了這些

運算結(jié)構(gòu)所能表示的數(shù)據(jù)范圍時,就產(chǎn)生溢出。

▲以加法器和通用寄存器的二進制位數(shù)定義為計算機

的字長。計算機的字長通常是8的整數(shù)倍。

3.4定點乘法運算

?常規(guī)的乘法運算方法(定點小數(shù))

?筆一紙乘法方法,

?原碼乘法,

?帶符號位運算的補碼乘法,

?用組合邏輯線路構(gòu)成的陣列乘法器。

3.4.1原碼一位乘法

?用原碼實現(xiàn)乘法運算時,符號

位與數(shù)值位是分開計算的;

?原碼乘法運算分為二步;

?第一步是計算乘積的符號位;乘積的符號為相乘二數(shù)

符號的異或值。

?第二步是計算乘積的數(shù)值位;乘積的數(shù)值部分為兩數(shù)

的絕對值之積。

?用數(shù)學表達式描述原碼乘法運算

?設(shè):[X]原=,0,1.........Xn,[Y]原一

yoyi….yn(其中X。、y°分別為它們的符

號位)、

.若[X*Y「=ZoZi……Z2n(其中Zo為結(jié)果之符號位)

則Zo=Xo十yo

?Z1.........Z2n=(X1……Xn)*(yi……Yn)

?筆一紙乘法方法

▲例LX=0.1011,Y=0.1101,X*Y的筆一紙乘法過程:

0.1011被乘數(shù)X=O.X1X2X3X4=O.1OU

*0.1101乘數(shù)丫=0.8丫2丫3丫4=0?1101

1011X*y/2-4

0000X*丫3*2-3

1011X*丫2*2-2

1011X*y/2-1

4

o.ioooiiiix*y=Z(x*X*2-z)=o.ioooim

Z=1

?因止匕X*Y=0.10001111

?X*Y的筆一紙乘法過程中,計

算兩個正數(shù)的乘法特點:

①用乘數(shù)Y的每一位依次去乘以被乘數(shù),得X*%i=4、

3、2、1。若,=0,得0。若yi=L得X。

②把①中求得的各項結(jié)果x*y在空間上向左錯位排列,

即逐次左移,可以表示為X*y「2-i。

4

③對②中求得的結(jié)果求和,f(X3*2T),這也就是兩

個正數(shù)的乘積。I

?就筆一紙乘法方法,為提高效率

而采取的改進措施

①每將乘數(shù)Y的一位乘以被乘數(shù)得X*、后,就將該結(jié)

果與前面所得的結(jié)果累加,而得到Py稱之為部分

積;這減少了保存每次相乘結(jié)果X*y的開銷。

②將部分積Pi右移一位與X*y相加。加法運算始終對

部分積中的高n位進行;因此,只需用n位的加法器

就可實現(xiàn)二個n位數(shù)的相乘。

③對乘數(shù)中“1”的位執(zhí)行加法和右移運算,對“0”的

位只執(zhí)行右移運算,而不執(zhí)行加法運算。可以節(jié)省

部分積的生成時間。

?部分積迭代法

▲已知兩正小數(shù)X和Y,Y=0.yty2........yn?則:

.X*Y=X*(0.yiy2……yn)

=X*y/24+X*丫2*2.2+X*丫3*2.3+-------+X*y/2-n

=2-i{2-i[2-i-2-i(2-i(0+X*yn)+X*yn.1)+-一+

——、_____)X*yp+X*yj

n個2」

▲上述乘法運算可以歸結(jié)為循環(huán)

地計算下列算式:

?設(shè)P()=0

P1=2“(Po+X*yn)

P2=2/(H+X*yn4)

Pi+i=21(H+X*yn4)(i=0J23,.…n-1)

Pn=2」(Pn4+X*yi)

?顯然,X*Y=Pn

▲迭代過程可以歸結(jié)為:

?若Ynl的值為“1”,將上一步迭代的

部分積匕與X相加。

?若Y*的值為“0”,什么也不做。再右移一位,產(chǎn)生

本次的迭代部分積Pi+「

?整個迭代過程以乘數(shù)最低位開始,經(jīng)過n次

“判斷——加法——右移”循環(huán)直到求出Pn為止。

?Pn就為乘法結(jié)果。

▲實現(xiàn)這種方法的二個定點小數(shù)

乘法的邏輯電路框圖

圖3.16實現(xiàn)定點乘法運算的邏輯電路

▲例1.已知[X]原=01101JY]原=01011,

?若[X*Y]JM=ZOZ1……z8

貝I]z0=0?0=0

?句……Z8=U01*10U的計算采用上述乘法流程,實現(xiàn)

的具體過程如下:

CPY說明

000001011開始,設(shè)Po=O

+1101y4=l,+X

01101IC,P和Y同時右移一位

0011011101得Pi

001101101得Pl

+1101I丫3=1,+X

10011C,P和Y同時右移一位

010011110得P2

y2=0,示作加注

C,P和Y同時右移一位

001001111得P3

+1101yx=l,+X

10001C,P和Y同時右移一位

0100011111得P4

?zt.......z8=10001111

?[X*Y^=ZoZ].......z8=010001111

3.4.2原碼二位乘法

?原碼二位乘法的思想

?為提高乘法的速度,可以對乘數(shù)的每兩位取值情況進

行判斷,一步求出對應于該兩位的部分積。

?采用原碼二位乘法,只需增加少量的邏輯線路,就可

以將乘法的速度提高一倍。

?在乘法中,乘數(shù)的每兩位有四種可能的組合,每種

組合對應于以下操作:

2

00---------Pi+1=2Pi

01---------Pj+i=2-2(Pi+X)

10Pi+i=2-2(Pj+2X)

2

11Pi+i=2(Pi+3X)

?實現(xiàn)+3X有兩種方法:

①分+X再+2X來進行,次法速度較低。

②以4X?X來代替3X運算,在本次運算中只執(zhí)行?X,

而+4X則歸并到下一拍執(zhí)行。

Pi+i=2-2(Pj+3X)=2-2(P「X+4X尸2-2(P「X)+X。

?用yw、8和T三位來控制乘法操作

?觸發(fā)器T用來記錄是否欠下+X,若是,則1fT

?原碼兩位乘法運算規(guī)則

表3.3原碼兩位乘法運算規(guī)則

YuYiT操作迭代公式

0000fT22(Pj)

001+x0fT2-2(Pj+X)

010+x0fT2九匕+X)

011+2X0fT2"2(Pi+2X)

100+2X0—T2-2(Pj+2X)

101-XT2-2(P「X)

110-XT2{PrX)

111T22(Pi)

?原碼兩位乘法運算過程舉例

例1:已知[X]原=0111001,[Y]s=0100111,

[|X|]#=0111001,[-|X|]#=1000111;

則z0=0?0=0

?zt.......々2=111001*100111具體過程:

PYT說明

ooooooooo_loom~~6開始,Po=o,T=O~~

+111000111y5y6T=110,-X,T=1

111000111P和Y同時右移2位

Ill000111P和Y同時右移2位

1111100011110011得Pl

+001110010Iy3y4T=011,+2X,T=0

001100011P和Y同時右移2位

0000110001111100得P2

+001110010\yiy2T=100,+2X,T=0

010001010P和Y同時右移2位

0001000101011110得P3

?zx.......z12=100010101111

.因止匕[X*Y]原=0100010101111

3.4.3補碼一位乘法

?考查兩個補碼乘法運算的例子

例1:已知X=0.1011,Y=0.0001

[X]補=01011,[Y]補=00001

[X*Y]補=000001011

[X]補*[Y]補=000001011

?顯然,[X*Y]補=[X]補叫Y]補

例2:已知X=0.1011,Y=-0.0001

[X]補=01011"Y]補=11111

[X*Y]補=111110101

[X]補*[Y]補=101010101

?顯然,[X*Y]補w[X]補*[Y]補

▲對兩個正數(shù)來說,它們補碼的乘積等于它們乘積的

補碼。若乘數(shù)是負數(shù)時,這種情況就不成立了。

?考查兩個補碼乘法運算的一般情況

?若兇補=X°X]……X。,[丫]補=y°yi-ynO

?根據(jù)補碼定義,可得出其真值:

Y=-y0+f

?[**丫]補=[X*(?y°+£補

=【£X*yi2*X*y。]補

i=l

n

=2區(qū)*2]補+[-X*y0]補

?Booth(布斯)乘法

▲A.D.Booth算法思想:

?相乘二數(shù)用補碼表示,它們的符號位與數(shù)值位一起

參與乘法運算過程,直接得出用補碼表示的乘法結(jié)果,

且正數(shù)和負數(shù)同等對待。

▲Booth算法推導:

?已知[X]補=XoXi……xn,[丫]補=yoyx……yn;根據(jù)補碼

定義,可得出:

?根據(jù)補碼定義,可得出其真值:

Y=-yo+£力2"

i=l

=-yo+yi2'1+y22'2+y32-3+……+yn2"n

12

=-yo+(y/y/i)+(y22--y22-)+……+(yn2-(n-D-yn2-n)

+2-2+

=(yrYo)82+1)2/+(y3-y2)+……

(n4)

(yn-yn-i)2-+(o-yn)2-

=£(yi+ryi)2"

i=l

?設(shè)yn+i=o(稱為輔助位);有:

[X*Y]補=[X《(yi+1-yi)2-%h

i=l

』)

={(yry0)X+2-4(y2-yx)X+2-1((y3-y2)X+…+2-i((yn]+i?ynX+

.—((yn-yQx+z-Yyvyn)X)…)…)]}補

?得到如下遞推公式:

區(qū)+補口)

11=[2-i(Pi+(yn]+i?yn.i)X%(i=0,1,2…

?上式中Pi為上次部分積,丹+1為本次部分積。

令[Pol補=。,有:

1

[Pil#=[2-(y?+i-yn)*x]#(i=o)

叱]補

=[24Pi+(yn-yn.1)*x)]#(i=1)

%]補」

=[3-i(Pn+(y2-yi)*x)]#(i=n-i)

p=p「補

[n+ll#[n+(yyo)*X]

?經(jīng)過比較可得

因*丫]補=%+山卜=[Pn+(y/y0)*X]補

=%1補+[仇伙)*蜀補

?對乘數(shù)的連續(xù)兩位y*和y*+i進行判斷

若y*y*+i=0i,則[Pi+J補=[24(Pi+X)]補

若yn』yn-i+l=10,則[Pi+J補=[2"(P「X)]補

若yn-iynl+i=oo或11,則出+1]補=[2-嗎]補

?一個補碼數(shù)據(jù)的右移是連同符號位右移,且最高位補

充符號位的值。

▲補碼乘法運算規(guī)則:

①乘數(shù)最低位增加一輔助位yn+i=O;

②判斷y,ymi+i的值,決定是“+x”或、x”,或僅右

移一位,得部分積;

③重復第②步,直到最高位參加操作(yryo)*X,但不

作移位,結(jié)果得[X*Y]補。

.圖3.18是實現(xiàn)布斯乘法的算法流程圖

3

?

18布

▲例3:已知[X]補=01101,[丫]補=10110,

[■X]補=10011。

.用布斯乘法計算[X*Y]補的過程如下

P丫yn+i說明

000000101100開始,設(shè)丫5=0,[Pol補=0

y4y5=。。,P、Y同時右移一位

000000010110得[PJ補

+110011y3y4=10,+[?X]補

110011iP、Y同時右移一位

111001101011得明]補

-1y2y3=ILP>Y同時右移一位

111100110101得0]補

111100110101得[P3]補

+001101yM=oi,+[X]補

001001」P、Y同時右移一位

000100111010得叫1補

+110011y°yi=io,+卜蜀補

11011111101最后一^次不右移

?因此,[X*Y]補=101111110

▲布斯乘法的算法過程為n+1次的“判斷一加減一右移”

的循環(huán),判斷的次數(shù)為n+1次,右移的次數(shù)為n次。

▲在布斯乘法中,遇到連續(xù)的“1”或連續(xù)的“0”時,

是跳過加法運算,直接實現(xiàn)右移操作的,運算效率

高。

3.4.4補碼二位乘法

?補碼二位一乘的方法可以用布斯

乘法過程來推導

?[Pi+ll補=21{叫補+Gn-i+1-yn-i)*[X]補

?田+2]補=21{出+1]補+(ynl-yn-Q*[X]補

?叱+2]補=2-2{田]補+(yn-i+1+丫111-2yn-i-i)*[X]補

▲根據(jù)乘數(shù)的兩位代碼丫用和y,以及右鄰位yn1+i的值

的組合作為判斷依據(jù),跳過Ti+J補步,即從明]補直

接求得出+2]補。

表3.4乘數(shù)3位代碼組合構(gòu)成的判斷規(guī)則

乘數(shù)代碼對右鄰位加減判斷規(guī)則[Pj+2]補

yn-i-l丫n-iYn-i+l

00002-2叫補

001+[X]補2-2{叫補+[X]補}

010+[X]補2-2{叫補+兇補}

011+2[X]補2-2{[PJ補+2[X]補}

100+2[?X]補2-2{叫補+2[.X]補}

101+[X]補2-2{[固補+bX]補}

110+[-X]補2-2{叫補+[?X]補}

111021四補

?設(shè)乘數(shù)[丫]補=丫0丫1.......yn,導出

補碼二位乘法中的計算量。

⑴當n為偶數(shù)時,乘法運算過程中的總循環(huán)次數(shù)為

n/2+1o

(2)當n為奇數(shù)時,乘法運算過程中的總循環(huán)次數(shù)

為(n+1)/2o

?例4:已知[X]補=00011JY]補=11010.[?X]補=11101

o用補碼二位乘法計算[X*Y]補的過程。

說明

PYyn+i

000000°"oio0開始,設(shè)丫5=0,[P。]補=0

+1111010y3y4y5=100,+2[?x]補

1111010IP和Y同時右移二位

1111110IOILIO1得四1補

+1111101丫1丫2丫3=101,+1?X]補

1111011P和Y同時右移二位

11111101110^1得叱1補

丫0丫0丫1=111,示械加法

最后一*次不右移

.[X*Y]補=111101110

3.4.5陣列乘法器

?實現(xiàn)上述執(zhí)行過程的陣列結(jié)構(gòu)的乘法器,

稱為陣列乘法器(ArrayMultiplier)

?圖3.19中實現(xiàn)了X*Y的乘法運算,其中X=x/2X3X4,

Y=yiy2y3y4。x和Y都是無符號的小數(shù)部分。

444

X*Y=ZX*yj2-j=ZQX*yj2-i)2-j

j=lj=li=l

▲上式中一位乘積xJx用一個兩輸入端的“與”門實現(xiàn);

.每一次加法操作用一個全加器實現(xiàn);

?2-i和2T的因子所蘊含的移位是由全加器的空間錯位來

實現(xiàn)。

圖3.19直接實現(xiàn)定點數(shù)絕對值相乘

的陣列乘法器

部分積入被乘數(shù)x

?陣列乘法器的特點

?陣列乘法器的組織結(jié)構(gòu)規(guī)則性強,

標準化程度高。適合用超大規(guī)模

集成電路實現(xiàn),且能獲得很高的

運算速度。

?集成電路的價格不斷下降,陣列乘法器在某些數(shù)字系

統(tǒng)中,例如在信號及數(shù)據(jù)處理系統(tǒng)中受到重視,它不

需要時鐘脈沖,而其乘法速度僅決定于門和加法器的

傳輸延遲。

?Booth算法的乘法運算也可以用陣列乘法器的方法實

現(xiàn),但要求的單元更復雜。

3.5定點除法運算

3.5.1原碼除法運算

?筆■紙方法的除法步驟:

①被除數(shù)與除數(shù)比較,決定上商。若被除數(shù)小,上商0;

否則上商1。得到部分余數(shù)。

②將除數(shù)右移,再與上一步部分余數(shù)比較,決定上商,

并且求得新的部分余數(shù)。

③重復執(zhí)行第②步,直到求得的商的位數(shù)足夠為止。

例1:已知兩正數(shù)X=0.1001U0L

Y=0.1011

0.1110<商

0.10110.10011101V被除數(shù)

0000

除數(shù)10011101

1011部分余數(shù)

1000101V

1011

11001

1011

0011

0000

OOHV--------余數(shù)

?X/Y的商為0.1110,余數(shù)為0.0011*2-4

▲原碼一位除法規(guī)律

?原碼一位除法運算與原碼一位乘法運算一樣,要區(qū)分

符號位和數(shù)值位兩部分。

?商的符號為相除兩數(shù)符號的“異或”值,商的數(shù)值為

兩數(shù)的絕對值之商。

?計算機中實現(xiàn)二個正數(shù)除法時,

有幾點不同:

①比較運算用減法來實現(xiàn),由減法結(jié)果的正負來判斷

兩數(shù)的大小。結(jié)果為正,上商I;結(jié)果為負,上商0。

②減法運算時,加法器中兩數(shù)的對齊是用部分余數(shù)左

移實現(xiàn),并與除數(shù)比較,以代替除數(shù)右移(手算時)與

部分余數(shù)比較。左移出界的部分余數(shù)的高位都是0,

對運算不會產(chǎn)生任何影響。

③在計算機中,每一次上商過程都是把商寫入商值寄

存器的最低位,然后部分余數(shù)和商一起左移,騰空

商寄存器的最低位以備上新的商。

?采用部分余數(shù)減去除數(shù)的方法比

較兩者的大小,當減法結(jié)果為負,

即上商0時,破壞了部分余數(shù)。

可米取兩種措施。

L恢復余數(shù)的除法

▲兩個正的定點小數(shù)X和Y,X=0.xxx2.......xn,

Y=0.yiy2……yn,求解X/Y的商和余數(shù)的方法:

第1步:Rx=X-Y

?若Ri〈O,則上商q0=0,同時恢復余數(shù):R.&+Y。

?若%>=0,則上商q()=l。

?q。位不是符號位,而是兩定點小

數(shù)相除時的整數(shù)部分;q0=l時,

當作溢出處理。

第2步:若已求得第i次的部分余數(shù)為Ry則第i+1次的部

分余數(shù)為:Ri+1=2RrY

?若Ri+i〈0,上商qj=O,同時恢復余數(shù):Ri+1=Ri+1+Yo

?若Ri+i>=0,則上商qj=lo

第3步:不斷循環(huán)執(zhí)行第2步,直到求得所需位數(shù)的商為

止。

例1:已知[X]原=01011,[Y]原=11101;

求[X/Y]原。

?計算分為符號位和數(shù)值位兩部分

?[X/Y]原商的符號位:0十1=1

?[X/Y]原商的數(shù)值位計算采用恢復余數(shù)法。運算中的減

法操作用補碼加法實現(xiàn)。

?HY|]#=10011o

▲分別標識為X和Y運算過程:

部分余數(shù)商說明

0010110

溫馨提示

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

評論

0/150

提交評論