上海交通大學(xué)“計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)”(第2章 運(yùn)算方法和運(yùn)算器)_第1頁
上海交通大學(xué)“計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)”(第2章 運(yùn)算方法和運(yùn)算器)_第2頁
上海交通大學(xué)“計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)”(第2章 運(yùn)算方法和運(yùn)算器)_第3頁
上海交通大學(xué)“計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)”(第2章 運(yùn)算方法和運(yùn)算器)_第4頁
上海交通大學(xué)“計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)”(第2章 運(yùn)算方法和運(yùn)算器)_第5頁
已閱讀5頁,還剩141頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)

上海交通大學(xué)網(wǎng)絡(luò)教育學(xué)院

陳澤宇博士、副教授

刖百

第1章計(jì)算機(jī)系統(tǒng)概論

第2章運(yùn)算方法和運(yùn)算器

第3章存儲(chǔ)系統(tǒng)

第4章指令系統(tǒng)

第5章中央處理器

第6章總線系統(tǒng)

X第7章外圍設(shè)備

第8章輸入輸出系統(tǒng)

第9章并行組織

2

第2章運(yùn)算方法和運(yùn)算器

2.1數(shù)據(jù)與文字的表示方法

2.2定點(diǎn)加法減法運(yùn)算

2.3定點(diǎn)乘法運(yùn)算

2.4定點(diǎn)除法運(yùn)算

2.5定點(diǎn)運(yùn)算器的組成

2.6浮點(diǎn)運(yùn)算方法和浮點(diǎn)運(yùn)算器

3

2.1數(shù)據(jù)與文字的表示方法

2.1.1數(shù)據(jù)格式

2」.2數(shù)的機(jī)器碼表示

2.1.3字符與字符串的表示方法

2.1.4漢字的表示方法

2.1.5校驗(yàn)碼

4

2.1.1數(shù)據(jù)格式

1.定點(diǎn)數(shù)的表示方法

2.浮點(diǎn)數(shù)的表示方法

3.十進(jìn)制數(shù)串的表示方法

5

?計(jì)算機(jī)中常用的數(shù)據(jù)表示格式有兩種

?定點(diǎn)格式

-容許的數(shù)值范圍有限,但要求的處理硬件

比較簡單

?浮點(diǎn)格式

-容許的數(shù)值范圍很大,但要求的處理硬件

比較復(fù)雜

6

1.定點(diǎn)數(shù)的表示方法

?所謂定點(diǎn)格式,即約定機(jī)器中所有數(shù)據(jù)的

小數(shù)點(diǎn)位置是固定不變的

?由于約定在固定的位置,小數(shù)點(diǎn)就不再使

用記號來表示

?通常將數(shù)據(jù)表示成純小數(shù)或純整數(shù)

7

?假設(shè)用一個(gè)n+1位字來表示一個(gè)定點(diǎn)數(shù)x,其

中一位X。用來表示數(shù)的符號位,其余位數(shù)代

表它的量值

?符號位X。放在最左位置,并用數(shù)值0和1分別

代表正號和負(fù)號

8

?如果數(shù)X表示的是純小數(shù)

-小數(shù)點(diǎn)位于X。和~之間

-數(shù)的表示范圍為:0<|x|<1-2'n

?如果數(shù)X表示的是純整數(shù)

-小數(shù)點(diǎn)位于最低位X”的右邊

-數(shù)的表示范圍為:00|x|02n.i

9

?目前計(jì)算機(jī)中多采用定點(diǎn)純整數(shù)表

示,因此將定點(diǎn)數(shù)表示的運(yùn)算簡稱

為整數(shù)運(yùn)算

10

2.浮點(diǎn)數(shù)的表示方法

?示例

-電子的質(zhì)量(9X10-28克)和太陽的質(zhì)量

(2X1033克)相差甚遠(yuǎn),在定點(diǎn)計(jì)算機(jī)中無

法直接來表示這個(gè)數(shù)值范圍

-為了送入定點(diǎn)計(jì)算機(jī)進(jìn)行某種運(yùn)算,必須

對它們分別取不同的比例因子,使其數(shù)值部

分絕對值小于1,即:

9X10—28=0.9X10—27

2X1033=0.2X1034

?浮點(diǎn)表示法

-把一個(gè)數(shù)的有效數(shù)字和數(shù)的范圍在計(jì)算機(jī)

的一個(gè)存儲(chǔ)單元中分別予以表示

-這種把數(shù)的范圍和精度分別表示的方法,

相當(dāng)于數(shù)的小數(shù)點(diǎn)位置隨比例因子的不同

而在一定范圍內(nèi)自由浮動(dòng),所以稱為浮點(diǎn)

表示法

12

浮點(diǎn)數(shù)的一般表示

?一個(gè)十進(jìn)制數(shù)N可以寫成:N=10e.M

?一個(gè)二進(jìn)制數(shù)N可以寫成:N=2e.M

-其中,

?M稱為浮點(diǎn)數(shù)的尾數(shù),是一個(gè)純小數(shù);

?e是比例因子的指數(shù),稱為浮點(diǎn)的指數(shù),是

一個(gè)整數(shù)

13

■在機(jī)器中表示一個(gè)浮點(diǎn)數(shù)時(shí)

-一是要給出尾數(shù)

?用定點(diǎn)小數(shù)形式表示

?尾數(shù)部分給出有效數(shù)字的位數(shù),因而決定了浮點(diǎn)

數(shù)的表示精度

-二是要給出指數(shù)

?用整數(shù)形式表示,常稱為階碼

?階碼指明小數(shù)點(diǎn)在數(shù)據(jù)中的位置,因而決定了浮

點(diǎn)數(shù)的表示范圍

14

IEEE754標(biāo)準(zhǔn)格式

313023220

32位浮點(diǎn)數(shù)S/?M

?32位的浮點(diǎn)數(shù)中

-S是浮點(diǎn)數(shù)的符號位

?占1位,安排在最高位

?S=0表示正數(shù),S=1表示負(fù)數(shù)

-M是尾數(shù)

?放在低位部分,占用23位

?用小數(shù)表示,小數(shù)點(diǎn)放在尾數(shù)域的最前面

15

-E是階碼

?占用8位

?階符采用隱含方式,即采用移碼方式來表

示正負(fù)指數(shù)

?將浮點(diǎn)數(shù)的指數(shù)真值e變成階碼E時(shí),應(yīng)

將指數(shù)e加上一個(gè)固定的偏移值127

(01111111),BPE=e+127

16

浮點(diǎn)數(shù)的規(guī)格化表示

?若不對浮點(diǎn)數(shù)的表示做出明確規(guī)定,

同一個(gè)浮點(diǎn)數(shù)的表示就不是唯一的

?例如,

(1.75)10=1.11X20(IEEE規(guī)格化表示)

=0.111X21(傳統(tǒng)規(guī)格化表示)

=0.0111X22

=0.00111X23

17

傳統(tǒng)規(guī)格化表示

?為了提高數(shù)據(jù)的表示精度,當(dāng)尾數(shù)不

為。時(shí),尾數(shù)域的最高有效位應(yīng)為1,

否則要以修改階碼同時(shí)左右移小數(shù)點(diǎn)

的辦法,使其變成符合這一要求的表

示形式,這稱為浮點(diǎn)數(shù)的規(guī)格化表示

18

IEEE規(guī)格化表示

?IEEE754標(biāo)準(zhǔn)中,一個(gè)規(guī)格化的32位浮點(diǎn)

數(shù)X的真值可表示為

x=(-l)sX(l.M)X2ET27e=E-127

其中尾數(shù)域所表示的值是1.M

?因?yàn)橐?guī)格化的浮點(diǎn)數(shù)的尾數(shù)域最左(最高

有效位)總是1,故這一位經(jīng)常不予存儲(chǔ),

而認(rèn)為隱藏在小數(shù)點(diǎn)的左邊,這可以使尾

數(shù)表示范圍多一位,達(dá)24位

19

機(jī)器零

?當(dāng)一個(gè)浮點(diǎn)數(shù)的尾數(shù)為0,不論其階

碼為何值,

-或者當(dāng)階碼的值遇到比它能表示的最

小值還小時(shí),不管其尾數(shù)為何值,

?計(jì)算機(jī)都把該浮點(diǎn)數(shù)看成零值,稱為

機(jī)器零

20

浮點(diǎn)數(shù)表示范

符號位S(1位)階碼E(8位)尾數(shù)MQ3位)真值x(共32位)

0/100零(正零/負(fù)零)

0/1255(全1)0無窮大(+oo/-oo)

0/11-254刈(-l)sX(l.M)X2E-127為IEEE規(guī)格化數(shù)

?在32位浮點(diǎn)數(shù)表示中,要除去E用全0和全1(2551。)

表示零和無窮大的特殊情況,指數(shù)的偏移值不選128

(10000000),而選127(01111111)

?對于規(guī)格化浮點(diǎn)數(shù),E的范變?yōu)?到254,真正的指

數(shù)值e則為-126到+127

因此32位浮點(diǎn)數(shù)表示的絕對值的范|是

2-126?2127仁10-38?1()38(以1。的幕表示)

21

浮點(diǎn)數(shù)的采用

?浮點(diǎn)數(shù)所表示的范圍遠(yuǎn)比定點(diǎn)數(shù)大

?一般在高檔微機(jī)以上的計(jì)算機(jī)中同時(shí)

采用定點(diǎn)、浮點(diǎn)表示,由使用者進(jìn)行

選擇

?而單片機(jī)中多采用定點(diǎn)表示

22

十進(jìn)制數(shù)、二進(jìn)制數(shù)轉(zhuǎn)換(補(bǔ)充)

?十進(jìn)制數(shù)■二進(jìn)制數(shù)轉(zhuǎn)換方法

-將十進(jìn)制數(shù)的整數(shù)部分除以2,每除一次取一次余數(shù),

無余數(shù)取零,按逆序取值

-將十進(jìn)制數(shù)的小數(shù)部分乘以2,每乘一次取一次整數(shù),

無整數(shù)取零,按順序取值

-例:

(235.25)10=11101011.01

?二進(jìn)制數(shù)■十進(jìn)制數(shù)轉(zhuǎn)換方法

-按權(quán)相加

-例:

5422

110101.01=2+2+2+1+2-=32+16+4+1+0,25=(53.25)10

23

3

z

?s

sM

d

?

P21例1

[例1]若浮點(diǎn)數(shù)X的754標(biāo)準(zhǔn)存儲(chǔ)格式為(41360000)16,求其

浮點(diǎn)數(shù)的十進(jìn)制值。

[解:]

將16進(jìn)制數(shù)展開后,可得二進(jìn)制數(shù)格式為

0too0001001101100000000000000000

S階碼(8位)尾數(shù)(23位)

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

包括隱藏位1的尾數(shù)l.M=L01101100000000000000000=1.011011

于是有

se3

x=(-l)Xl.MX2=+(l.011011)X2=+1011.011=(11.375)10

25

P21例2

[例2]將十進(jìn)制數(shù)20.59375轉(zhuǎn)換成754標(biāo)準(zhǔn)的32位浮點(diǎn)數(shù)的二

進(jìn)制存儲(chǔ)格式。

[解:]

首先分別將整數(shù)和分?jǐn)?shù)部分轉(zhuǎn)換成二進(jìn)制數(shù):

20.59375=10100.10011

然后移動(dòng)小數(shù)點(diǎn),使其在第L2位之間

10100.10011=1.010010011X24e=4

于是得到:

S=0,E=4+127=131,M=010010011

最后得到32位浮點(diǎn)數(shù)的二進(jìn)制存儲(chǔ)格式為:

01000001101001001100000000000000=(41A4C000)i6

26

3.十進(jìn)制數(shù)串的表示方法

?十進(jìn)制數(shù)串在計(jì)算機(jī)內(nèi)主要有兩種表示形式:

-字符串形式

-一個(gè)字節(jié)存放一個(gè)十進(jìn)制的數(shù)位或符號位

-占用連續(xù)的多個(gè)字節(jié)

-主要用在非數(shù)值計(jì)算的應(yīng)用領(lǐng)域中

-壓縮的十進(jìn)制數(shù)串形式

-一個(gè)字節(jié)存放兩個(gè)十進(jìn)制的數(shù)位

-節(jié)省存儲(chǔ)空間

-便于直接完成十進(jìn)制數(shù)的算術(shù)運(yùn)算

27

2.1.2數(shù)的機(jī)器碼表示

1.原碼表示法

2.補(bǔ)碼表示法

3.反碼表示法

4.移碼表示法

28

?符號位如何表示?是否也同數(shù)值位一道參

加運(yùn)算操作?

?為了妥善的處理好這些問題,就產(chǎn)生了把

符號位和數(shù)值位一起編碼來表示相應(yīng)的數(shù)

的各種表示方法,如原碼、補(bǔ)碼、反碼、

移碼等

?為了區(qū)別一般書寫表示的數(shù)和機(jī)器中這些

編碼表示的數(shù),通常將前者稱為真值,后

者稱為機(jī)器數(shù)或機(jī)器碼

1.原碼表示法

?定點(diǎn)小數(shù)

-若定點(diǎn)小數(shù)的原碼形式為Xo.xxx2...,貝!J原

碼表示的定義是

x1>x>0

[x]原一jl—x=]+1刈O>X>-1

-例如,

x=+0.1001,貝(j[x]原=0.1001

x=-0.1001,貝(j[x]原=1.1001

30

-對于正數(shù)x=+0.x1x2..n

[x]原=0?X/2…Xn

-對于負(fù)數(shù)X=-0.X/2?.

[x]原=l?XiX2…Xn

-對于0

原碼機(jī)器中往往有“+0,“-0”之分,故

有兩種形式:

[+0]原=0.000...0

[―0]原=1.000...0

31

?定點(diǎn)整數(shù)

-若定點(diǎn)整數(shù)的原碼形式為XoX/2…,則原碼

表示的定義是

x2">x>0

[%]原-

2〃一x=2〃+x0>X>-2"

?特點(diǎn)

-采用原碼表示法簡單易懂,但它的最大缺點(diǎn)

是加法運(yùn)算復(fù)雜

-為了解決這些矛盾,人們找到了補(bǔ)碼表示法

32

2.補(bǔ)碼表示法

?負(fù)數(shù)用補(bǔ)碼表示時(shí),可以把減法轉(zhuǎn)化為加法。

這樣,在計(jì)算機(jī)中實(shí)現(xiàn)起來就比較方便

?定點(diǎn)小數(shù)

-若定點(diǎn)小數(shù)補(bǔ)碼形式為Xo.X/2…Xn,則補(bǔ)碼表示的

定義是

fx1>x>0

H補(bǔ)八、

—I1Qd2)

I2+x—2Ix0>x2—1

-例如,

X=+O.ion,貝!j[x]補(bǔ)=0.1011

X=-0.1011,貝!)[x]補(bǔ)=10+x=10.0000-0.1011=1.0101

33

-對于正數(shù)x=+0.x1x2...xn

[x]補(bǔ)=0.xrx2...xn

~對于負(fù)數(shù)X=-0.X/2…乂口

[x]^=10.00...0-0.x1x2...xn(mod2)

-對于0

[+0]補(bǔ)=[-0]補(bǔ)=0.0000(mod2)

0的補(bǔ)碼表示只有一種形式

34

?定點(diǎn)整數(shù)

-對定點(diǎn)整數(shù),補(bǔ)碼表示的定義是

_fx2n>x>0

“補(bǔ)一j+x=2〃+i-1x|0>x>-2z(mod2〃+i)

?特點(diǎn)

-采用補(bǔ)碼表示法進(jìn)行減法運(yùn)算就比原碼方便得多了。

因?yàn)椴徽摂?shù)是正還是負(fù),機(jī)器總是做加法,減法運(yùn)算可

變?yōu)榧臃ㄟ\(yùn)算

-但為了用加法代替減法,結(jié)果還得在求補(bǔ)碼時(shí)作一次

減法,這顯然是不方便的

-反碼表示法可以解決負(fù)數(shù)的求補(bǔ)問題

35

3.反碼表示法

?定點(diǎn)小數(shù)

-對定點(diǎn)小數(shù),反碼表示的定義為

X1>x>0

國反二

(2-2-n)+x0>x>-1

36

-對于正數(shù)x=+0.x1x2...xn

[x]反=0?X/2…Xn

-對于負(fù)數(shù)X=-0.X/2…Xn

[x]反=1?再工2.??4

-對于0

有[+0]反和[-0]反之分:

[+0]反=0.00...0

[-0]反=1.11…1

37

?定點(diǎn)整數(shù)

-對定點(diǎn)整數(shù),反碼表示的定義為

X2n>x>0

國反二

(2〃+i—1)+x0>x>—2〃

38

反碼、補(bǔ)碼計(jì)算方法(補(bǔ)充)

?反碼

-正數(shù)的反碼與原碼相同;

-負(fù)數(shù)的反碼是:符號位不變,數(shù)值位逐位取反

?補(bǔ)碼

-正數(shù)的補(bǔ)碼與原碼相同;

-負(fù)數(shù)的補(bǔ)碼是:符號位不變,數(shù)值位逐位取反

加1

39

4.移碼表示法

?移碼通常用于表示浮點(diǎn)數(shù)的階碼

?定點(diǎn)整數(shù)

-假定定點(diǎn)整數(shù)移碼形式為X0X/2…X”時(shí),

移碼的傳統(tǒng)定義是

nn

H移=2、x2>x>-2

式中,2n是一個(gè)固定的偏移值

40

-例如,

當(dāng)正數(shù)x=+10101時(shí),[x]移=1,10101

當(dāng)負(fù)數(shù)x=-10101時(shí),[x]移=25+x=25-10101=0,01011

-移碼中的逗號不是小數(shù)點(diǎn),而是表示左邊一位

是符號位

-移碼中符號位X。表示的規(guī)律與原碼、補(bǔ)碼、

反碼相反

41

?數(shù)據(jù)四種機(jī)器表示法中,移碼表

示法主要用于表示浮點(diǎn)數(shù)的階碼

?由于補(bǔ)碼表示對加減運(yùn)算十分方

便,因此目前機(jī)器中廣泛采用補(bǔ)

碼表示法

42

co

寸9

鼠222

888

P25例3

[例3]以定點(diǎn)整數(shù)為例,用數(shù)軸形式說明原碼、反碼、補(bǔ)碼表

示范圍和可能的數(shù)碼組合情況。

[解:]

表示范圍:原碼(-2'2n),反碼(-212n),補(bǔ)碼[-2n,2n)

在補(bǔ)碼表示中“0”只有一種形式,且用補(bǔ)碼表示負(fù)數(shù)時(shí)范圍可到-

Cn

11...110...0110…0…000...0101...1

I________I_________1__________I______n_I

-(2a-D-10顛+1+(2"-1)

一人人000101...1

10?r01L??1I00???0UU..JI?

nU

-(2-D-io反碼+1+(2-D

10...0io...0111...100...000...0101...1

I________L________L_

-2n-(2n-D-io補(bǔ)碼+i+(2"-D

44

P26例4

[例4]將十進(jìn)制真值x(?127,-1,0,+1,+127)列表表示成二進(jìn)制數(shù)

及原碼、反碼、補(bǔ)碼、移碼值。

[解:]

真值X(十進(jìn)制)真值X(二進(jìn)制)[x]原㈤反[x]補(bǔ)[x]移

-127-0111111111111111100000001000000100000001

-1-0000000110000001111111101111111101111111

1000000011111111

0000000000000000010000000

0000000000000000

+1+0000000100000001000000010000000110000001

+127+0111111101111111011111110111111111111111

其中,0在[x]原,[x]反中有兩種表示,[x]移=x+27=x+10000000

由表中數(shù)據(jù)可向,補(bǔ)碼值與移碼值差別僅在于符號位不同

45

P26例5

[例5]設(shè)機(jī)器字長16位,定點(diǎn)表示,尾數(shù)15位,數(shù)符1位,問:

⑴定點(diǎn)原碼整數(shù)表示時(shí),最大正數(shù)是多少?最小負(fù)數(shù)是多少?

(2)定點(diǎn)原碼小數(shù)表示時(shí),最大正數(shù)是多少?最小負(fù)數(shù)是多少?

[解:]

(1)定點(diǎn)原碼整數(shù)表示

最大正數(shù)值二⑵5一1)w=(+32767)10

0111111111111111

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

1111111111111111

(2)定點(diǎn)原碼小數(shù)表示

最大正數(shù)值=(1-2-15)1。=(+0.111...Il%

最小負(fù)數(shù)值=-(1-2-15)]0=(-0?111???11)2

P26例6

[例6]假設(shè)由S,E,M三個(gè)域組成的一個(gè)32位二進(jìn)制數(shù)所表示的非零規(guī)格化

浮點(diǎn)數(shù)x,真值表示為(注:非IEEE754標(biāo)準(zhǔn)):x=(-l)sX(LM)X2E-128

問:它所表示的規(guī)格化的最大正數(shù)、最小正數(shù)、最大負(fù)數(shù)、最小負(fù)數(shù)是

多少?

[解:]

(1)最大正數(shù):S=0,E=255,M=-2-23

23127

01111111111111111111111111111111x=[l+(l-2-)]X2

(2)最小正數(shù):S=0,E=0,M=0

00000000000000000000000000000000x=l.0X2—128

(3)最小負(fù)數(shù):S=l,E=255,M=l-2-23

23127

11111111111111111111111111111111x=-[l+(l-2-)]X2

(4)最大負(fù)數(shù):S=l,E=0,M=0

10000000000000000000000000000000x=-1.0X2T28

47

2.1,3字符與字符串的表示方法

?字符表示

?字符串表示

48

字符表示

?目前國際上普遍采用的字符系統(tǒng)是

ASCH碼

-美國國家信息交換標(biāo)準(zhǔn)字符碼

—P27表2」

?包括

-10個(gè)十進(jìn)制數(shù)碼

-26個(gè)英文字母

-一定數(shù)量的專用符號

-總共128個(gè)元素

因此二進(jìn)制編碼需要7位

49

表2.1ASCH字符編碼表

000001010on100101no111

b3b2bl

0000NULDLESP0@Pp

0001SOHDC1*!1AQaq

0010STXDC2,,2BRbr

0011ETXDC3#3CScs

0100EOTDC4$4DTdt

0101ENQNAK%5EUeu

0110ACKSYN&6FVfV

0111DELETB7GWgw

1000BSCAN(8HXhX

1001HTEM)9IYiy

**

1010LFSUB*JZjz

1011VTESC+*K[k(

1100FFFS9<L\11

1101CRGS-—M1m}

1110SORS?>Nn

/?

miSIUSO_0DEL50

?ASCH碼規(guī)定8個(gè)二進(jìn)制位的最高一位為0,

余下的7位可以給出128個(gè)編碼,表示128個(gè)

不同的字符

其中95個(gè)編碼,對應(yīng)著計(jì)算機(jī)終端能敲入并且

可以顯示的95個(gè)字符,打印機(jī)設(shè)備也能打印這

95個(gè)字符

-另外的33個(gè)字符,不對應(yīng)任何一個(gè)可以顯示或

打印的實(shí)際字符,它們被用作控制碼,控制計(jì)算

機(jī)某些外圍設(shè)備的工作特性和某些計(jì)算機(jī)軟

件的運(yùn)行情況

51

字符串表示

?字符串是指連續(xù)的一串字符

-通常方式下,它們占用主存中連續(xù)的多個(gè)字

節(jié),每個(gè)字節(jié)存一個(gè)字符

-當(dāng)主存字由2個(gè)或4個(gè)字節(jié)組成時(shí),在同一個(gè)

主存字中,既可按從低位字節(jié)向高位字節(jié)的

順序存放字符串的內(nèi)容,也可按從高位字節(jié)

向低位字節(jié)的次序順序存放字符串的內(nèi)容

52

?例如:

-字符串IFuA>BuTHENuREAD(C)可以按圖所

示從高位字節(jié)到低位字節(jié)依次存在主存中

IFUA

>BUT

HENu

READ

(C)

?其中設(shè)主存單元長度由4個(gè)字節(jié)組成

?每個(gè)字節(jié)中存放相應(yīng)字符的ASCH值,文字表達(dá)式中的

空格“口”在主存中也占一個(gè)字節(jié)的位置

53

2.1.4漢字的表示方法

1.漢字的輸入編碼

2.漢字內(nèi)碼

3.漢字字模碼

54

1-漢字的輸入編碼

?為了能直接使用西文標(biāo)準(zhǔn)鍵盤把漢

字輸入到計(jì)算機(jī),就必須為漢字設(shè)計(jì)

相應(yīng)的輸入編碼方法

■當(dāng)前采用的方法主要有以下三類:

-數(shù)字編碼

-拼音碼

-字形編碼

55

數(shù)字編不

?常用的是國標(biāo)區(qū)位碼,用數(shù)字串代表一個(gè)漢字輸入

-區(qū)位碼是將國家標(biāo)準(zhǔn)局公布的6763個(gè)兩級漢字分為94

個(gè)區(qū),每個(gè)區(qū)分94位,實(shí)際上把漢字表示成二維數(shù)組,每

個(gè)漢字在數(shù)組中的下標(biāo)就是區(qū)位碼。

-區(qū)碼和位碼各兩位十進(jìn)制數(shù)字,因此輸入一個(gè)漢字需按

鍵四次

?數(shù)字編碼輸入的優(yōu)點(diǎn)是無重碼,且輸入碼與內(nèi)部編

碼的轉(zhuǎn)換比較方便,缺點(diǎn)是代碼難以記憶

56

拼音彳閆

?拼音碼是以漢語拼音為基礎(chǔ)的輸入方法

但漢字同音字太多,輸入重碼率很高,因此

按拼音輸入后還必須進(jìn)行同音字選擇,

影響了輸入速度

57

字形編碼

?字形編碼是用漢字的形狀來進(jìn)行的編碼

?把漢字的筆劃部件用字母或數(shù)字進(jìn)行編碼

按筆劃的順序依次輸入,就能表示一個(gè)漢字

?例如五筆字型編碼

58

?為了加快輸入速度,在上述方法基礎(chǔ)上,發(fā)

展了詞組輸入、聯(lián)想輸入等多種快速輸

入方法

?理想的輸入方式是利用語音或圖象識別

技術(shù)“自動(dòng)”將拼音或文本輸入到計(jì)算

機(jī)內(nèi),使計(jì)算機(jī)能認(rèn)識漢字,聽懂漢語,并

將其自動(dòng)轉(zhuǎn)換為機(jī)內(nèi)代碼表示

59

2.漢字內(nèi)石

?漢字內(nèi)碼是用于漢字信息的存儲(chǔ)、交換、

檢索等操作的機(jī)內(nèi)代碼,一般采用兩個(gè)字節(jié)

表示

英文字符的機(jī)內(nèi)代碼是七位的ASCH碼,當(dāng)

用一個(gè)字節(jié)表示時(shí),最高位為“0”

為了與英文字符能相互區(qū)別,漢字機(jī)內(nèi)代碼

中兩個(gè)字節(jié)的最高位均規(guī)定為“1”

60

3.漢字字模碼

字模碼是用點(diǎn)陣表示的漢字字形代碼,它是漢

字的輸出形式

?根據(jù)漢字輸出的要求不同,點(diǎn)陣的多少也不同

-16X16、24X24、32X32,甚至更高

?字模點(diǎn)陣的信息量很大,所占存儲(chǔ)空間也很大

61

示例(P29圖2.1)

004,10

/I£10

FF

0410

0490

□0080

IFFC

1084

1084

1084

10FF

7F40

0120

0210

04

08,

70.

圖2.1漢字的字模點(diǎn)陣及編碼

62

?漢字的輸入編碼、漢字內(nèi)碼、

字模碼是計(jì)算機(jī)中用于輸入、

內(nèi)部處理、輸出三種不同用途

的編碼

63

24.5校驗(yàn)碼

?元件故障、噪聲干擾等各種因素常常導(dǎo)致計(jì)算機(jī)

在處理信息過程中出現(xiàn)錯(cuò)誤

?為了防止錯(cuò)誤,可將信號采用專門的邏輯線路進(jìn)

行編碼以檢測錯(cuò)誤,甚至校正錯(cuò)誤

-通常的方法是,在每個(gè)字上添加一些校驗(yàn)位,用來

確定字中出現(xiàn)錯(cuò)誤的位置

?計(jì)算機(jī)中常用這種檢錯(cuò)或糾錯(cuò)技術(shù)進(jìn)行存儲(chǔ)器讀

寫正確性或傳輸信息的檢驗(yàn)

64

奇偶校驗(yàn)

最簡單且應(yīng)用廣泛的檢錯(cuò)碼是采用一位校驗(yàn)

位的奇校驗(yàn)或偶校驗(yàn)

?只有當(dāng)X中包含有奇數(shù)個(gè)1時(shí),奇校驗(yàn)位C=0

?只有當(dāng)x中包含有偶數(shù)個(gè)1時(shí),偶校驗(yàn)位C=0

?奇偶校驗(yàn)可提供奇數(shù)個(gè)錯(cuò)誤檢測,但無法檢

測偶數(shù)個(gè)錯(cuò)誤,更無法識別錯(cuò)誤信息的位置

65

示例

?假設(shè)一個(gè)字X從部件A傳送到部件B

-在源點(diǎn)A,把X與校驗(yàn)位C合在一起(X0X1...Xn—C)送

到B

-假設(shè)在B點(diǎn)真正接收到的是x=(x°,x「…xn_;C')

—然后計(jì)算

F=x°,十xJs…?xn_;?C'?代表按位力口

-若F=l,意味著收到的信息有錯(cuò)

?例如(X0X1…Xn—)中正巧有一位變“反”時(shí)就會(huì)出現(xiàn)這種

情況

-若F=O,表明x字傳送正確

66

P30例7

[例7]已知下表中左面一欄有5個(gè)字節(jié)的數(shù)據(jù)。請分別用奇校

驗(yàn)和偶校驗(yàn)進(jìn)行編碼,填在中間一欄和右面一欄。

[解:]

假定最低一位為校驗(yàn)位,其余高8位為數(shù)據(jù)位,列表如下

從中看出,校驗(yàn)位的值取0還是取1,是由數(shù)據(jù)位中1的個(gè)數(shù)決定的

數(shù)據(jù)1的個(gè)數(shù)偶校驗(yàn)編碼c奇校驗(yàn)編碼C

101010104101010100101010101

010101003010101001010101000

000000000000000000000000001

011111117011111111011111110

111111118111111110111111111

67

2.2定點(diǎn)加法減法運(yùn)算

2.2.1補(bǔ)碼加法

2.2.2補(bǔ)碼減法

2.2.3溢出概念與檢測方法

X2.2.4基本的二進(jìn)制加法/減法器

X2.2.5十進(jìn)制加法器

68

2.2.1補(bǔ)碼加法

?負(fù)數(shù)用補(bǔ)碼表示后,可以和正數(shù)一樣來處理

-這樣,運(yùn)算器里只需要一個(gè)加法器就可以了,不必為了

負(fù)數(shù)的加法運(yùn)算,再配一個(gè)減法器

?補(bǔ)碼加法的公式:

岡補(bǔ)+[力補(bǔ)=[*+力補(bǔ)(mod2)

?在模2意義下,任意兩數(shù)的補(bǔ)碼之和等于該兩數(shù)

之和的補(bǔ)碼,這是補(bǔ)碼加法的理論基礎(chǔ)

69

o

86

LL

總88

dd

?

?

P31例8

[例8]x=0.1001,y=0.0101,求x+y。

[解:]

[x]補(bǔ)=0.1001,[y]補(bǔ)=0.0101

[x]補(bǔ)0.1001

+[y]補(bǔ)0.0101

[x+y]補(bǔ)0.1110

所以,x+y=+0.1110

71

P31例9

[例9]x=+0.1011,y=—0.0101,求x+y。

[解:]

[x]補(bǔ)=0.1011,[y]補(bǔ)=1.1011

[x]補(bǔ)0.1011

+[y]補(bǔ)1.1011

[x+y]補(bǔ)10,0110

所以,x+y=0.0110

72

?補(bǔ)碼加法的特點(diǎn)

-一是符號位要作為數(shù)的一部分一起

參加運(yùn)算

-二是要在模2的意義下相加,即超過

2的進(jìn)位要丟掉

73

2.2.2補(bǔ)碼減法

-負(fù)數(shù)的減法運(yùn)算也要設(shè)法化為加法來做,而不使

用直接減法

-可以和常規(guī)的加法運(yùn)算使用同一加法器電路,從而簡化

了計(jì)算機(jī)的設(shè)計(jì)

?補(bǔ)碼減法的公式:

[X—口補(bǔ)=[X]補(bǔ)一[月補(bǔ)=[*]補(bǔ)+[—力補(bǔ)(mod2)

?從[y]補(bǔ)求[?y]補(bǔ)的法則:

對[打補(bǔ)包括符號位“求反且最末位加1”,即可得到卜力

補(bǔ)

74

LO

鼠2£2

s

P32例10

[例已知求:

10]xx=-0.1110,x2=+0.1101,

[xj補(bǔ),[―xJ補(bǔ),補(bǔ),[―*2]補(bǔ)。

[解:]

[xj補(bǔ)=1.0010

[一X1]補(bǔ)=0.1101+0.0001=0.1110

[牙21補(bǔ)=0.1101

[一彳21補(bǔ)=1?0010+0.0001=1.0011

76

P33例11

[例11]X=+O.1101,F=+0.0110,求X—y。

[解:]

[x]補(bǔ)=0.1101

[y]補(bǔ)=0.0110,[―尸]補(bǔ)=1.1010

[x]補(bǔ)0.1101

+[-y]#1.1010

[x—y]補(bǔ)10.0111

所以,X—y=+0.0111

77

223溢出概念與檢測方法

?在定點(diǎn)小數(shù)機(jī)器中,數(shù)的表示

范圍為|x|<1

?在運(yùn)算過程中如出現(xiàn)大于1的

現(xiàn)象,稱為“溢出”

?在定點(diǎn)機(jī)中,正常情況下溢出

是不允許的

78

2

P33例12

[例12]x=+0.1011,y=+0.1001,求x+y。

[解:]

[x]補(bǔ)=0.1011,[y]補(bǔ)=0.1001

[才]補(bǔ)0.1011

+[力補(bǔ)0.1001

[x+力補(bǔ)1.0100

兩個(gè)正數(shù)相加的結(jié)果成為負(fù)數(shù),這顯然是錯(cuò)誤的

80

P33例13

[例13]^=-0.1101,y=-0.1011,求x+yo

[解:]

[x]補(bǔ)=1.0011,[y]#=1.0101

[x]補(bǔ)1.0011

+[力補(bǔ)1.0101

[x+y]補(bǔ)0.1000

兩個(gè)負(fù)數(shù)相加的結(jié)果成為正數(shù),這同樣是錯(cuò)誤的

81

溢出概念

?兩個(gè)正數(shù)相加,結(jié)果大于機(jī)器所能表示的最大正數(shù),稱為正溢

?兩個(gè)負(fù)數(shù)相加,結(jié)果小于機(jī)器所能表示的最小負(fù)數(shù),稱為負(fù)溢

?定點(diǎn)小數(shù)的溢出(P33圖2.2)

負(fù)溢出正溢出

負(fù)小數(shù)里掇爰

-10+1

圖2.2定點(diǎn)小數(shù)的溢出

?對定點(diǎn)整數(shù)而言,也同樣存在正溢、負(fù)溢問題

82

溢出檢測方法

?雙符號位法(變形補(bǔ)碼、模4補(bǔ)碼)

-如果兩個(gè)數(shù)相加后,其結(jié)果的符號位出

現(xiàn)“01”或“10”兩種組合時(shí),表示發(fā)生溢

-最高符號位永遠(yuǎn)表示結(jié)果的正確符號

83

s

寸9

。b

8g寸

dd

?

?

P34例14

[例14]x=+0.1100,y=+0.1000,求x+y。

[解:]

[x]補(bǔ)=00.1100,[內(nèi)補(bǔ)=00.1000

[x]補(bǔ)00.1100

+[y]補(bǔ)00.1000

01,0100

兩個(gè)符號位出現(xiàn)“01”,表示正溢

85

P34例15

[例15]^=-0.1100,y=-0.1000,求x+y。

[解:]

[x]補(bǔ)=11.0100,[內(nèi)補(bǔ)=11.1000

[才]補(bǔ)11.0100

+[力補(bǔ)11.1000

10.1100

兩個(gè)符號位出現(xiàn)“10”,表示負(fù)溢

86

結(jié)論

1.當(dāng)以模4補(bǔ)碼運(yùn)算,運(yùn)算結(jié)果的二符號位相異

時(shí),表示溢出;相同時(shí),表示未溢出

2.模4補(bǔ)碼相加的結(jié)果,不論溢出與否,最高符萬

位始終指示正確的符號

?在定點(diǎn)機(jī)中,當(dāng)運(yùn)算結(jié)果發(fā)生溢出時(shí),機(jī)

器通過邏輯電路自動(dòng)檢查出溢出,并進(jìn)行

中斷處理

87

2.3定點(diǎn)乘法運(yùn)算

2.3.1原碼并行乘法

232補(bǔ)碼并行乘法

88

2.3.1原碼并行乘法

1.人工算法與機(jī)器算法的同異性

X2.不帶符號的陣列乘法器

X3.帶符號的陣列乘法器

89

1.人工算法與機(jī)器算法的同異性

在定點(diǎn)計(jì)算機(jī)中,兩個(gè)原碼表示的數(shù)相乘的

運(yùn)算規(guī)則

-乘積的符號位由兩數(shù)的符號位按異或運(yùn)算得到

-而乘積的數(shù)值部分則是兩個(gè)正數(shù)相乘之積

-乘積符號的運(yùn)算法則:

?同號相乘為正

?異號相乘為負(fù)

90

例題(人工算法)

?設(shè)x=0.1101,?=0.1011,用習(xí)慣方法求其乘

積,其過程如下:

0.1101(X)

x0.1011(y)

1101

1101

0000

+1101

a~~loooiiii~(T)-

91

?人們習(xí)慣的人工算法對機(jī)器并不完

全適用

-機(jī)器通常只有n位長,兩個(gè)n位數(shù)相乘,

乘積可能為2n位

-只有兩個(gè)操作數(shù)相加的加法器,難以

勝任將各n位積一次相加起來的運(yùn)算

-串行算法

-早期計(jì)算機(jī)中為了簡化硬件結(jié)構(gòu),采用串行的1位乘

法方案,即多次執(zhí)行“加法一移位”操作來實(shí)現(xiàn)

-這種方法并不需要很多器件

-然而串行方法畢竟太慢,不能滿足科學(xué)技術(shù)對高速乘

法所提出的要求

?并行算法

-自從大規(guī)模集成電路問世以來,高速的單元陣列乘法

器應(yīng)運(yùn)而生,出現(xiàn)了各種形式的流水式陣列乘法器,

它們屬于并行乘法器

93

232補(bǔ)碼并行乘法

X1.補(bǔ)碼與真值的轉(zhuǎn)換公式

X2.一般化的全加器形式

X3.直接補(bǔ)碼陣列乘法器

94

?補(bǔ)碼乘法因符號位參與運(yùn)算,

?可以完成補(bǔ)碼數(shù)的“直接”乘法,

?因而大大加速了乘法過程

95

2.4定點(diǎn)除法運(yùn)算

2.4.1原碼除法算法原理

242并行除法器

96

2.4.1原碼除法算法原理

?兩個(gè)原碼表示的數(shù)相除時(shí)

-商的符號由兩數(shù)的符號按位相加求得

-商的數(shù)值部分由兩數(shù)的數(shù)值部分相除求得

97

?串行算法

-早期計(jì)算機(jī)中,為了簡化結(jié)構(gòu),硬件除法器

的設(shè)計(jì)采用串行的1位除法方案,即多次

執(zhí)行“減法一移位”操作來實(shí)現(xiàn),并使用

計(jì)數(shù)器來控制移位次數(shù)

-由于串行除法器速度太慢,目前已被淘汰

98

2.4.2并行除法器

X1.可控加法/減法(CAS)單元

X2.不恢復(fù)余數(shù)的陣列除法器

99

?并行算法

-和陣列乘法器相似,陣列式除法器也是一種

并行運(yùn)算部件,采用大規(guī)模集成電路制造

-與早期的串行除法器相比,陣列除法器不僅

所需要的控制線路少,而且能夠提供令人滿

意的高速運(yùn)算速度

100

2.5定點(diǎn)運(yùn)算器的組成

2.5.1邏輯運(yùn)算

2.5.2多功能算術(shù)/邏輯運(yùn)算單元(ALU)

2.5.3內(nèi)部總線

2.5.4定點(diǎn)運(yùn)算器的基本結(jié)構(gòu)

101

?運(yùn)算器是數(shù)據(jù)的加工處理部件,是CPU

的重要組成部分

■其最基本的結(jié)構(gòu)中必須有算術(shù)/邏輯運(yùn)

算單元、數(shù)據(jù)緩沖寄存器、通用寄存器、

多路轉(zhuǎn)換器和數(shù)據(jù)總線等邏輯構(gòu)件

102

2.5.1邏輯運(yùn)算

?計(jì)算機(jī)中除了進(jìn)行加、減、乘、除等基本

算術(shù)運(yùn)算以外,還可對兩個(gè)或一個(gè)邏輯數(shù)進(jìn)

行邏輯運(yùn)算

-所謂邏輯數(shù),是指不帶符號的二進(jìn)制數(shù)

-利用邏輯運(yùn)算可以進(jìn)行兩個(gè)數(shù)的比較,或者從

某個(gè)數(shù)中選取某幾位等操作

-在非數(shù)值應(yīng)用的廣大領(lǐng)域中,邏輯運(yùn)算是非

常有用的

103

計(jì)算機(jī)中的邏輯運(yùn)算

?主要是指邏輯非、邏輯加、邏輯乘、邏輯

異等四種基本運(yùn)算

邏輯非運(yùn)算(NOT)

-對某數(shù)進(jìn)行邏輯非運(yùn)算,就是按位求它的反

-邏輯非也稱求反

-常用變量上方加一橫“一”來表示

?邏輯加運(yùn)算(OR)

-對兩個(gè)數(shù)進(jìn)行邏輯加,就是按位求它們的“或”

-邏輯加又稱邏輯或

-常用記號“V”或“+”來表示

104

?邏輯乘運(yùn)算(AND)

-對兩數(shù)進(jìn)行邏輯乘,就是按位求它們的“與”

-邏輯乘又稱邏輯與

-常用記號或來表示

邏輯異運(yùn)算(XOR)

-對兩數(shù)進(jìn)行邏輯異就是按位求它們的模2和

-邏輯異又稱按位加

-常用記號“?”來表示

105

例題

?P50例21

?P51例22

?P51例23

?P52例24

106

溫馨提示

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

評論

0/150

提交評論