![計(jì)算機(jī)組成原理運(yùn)算方法運(yùn)算器_第1頁(yè)](http://file4.renrendoc.com/view10/M02/3E/1C/wKhkGWWzdzaAIp95AAFwNSMRR-s759.jpg)
![計(jì)算機(jī)組成原理運(yùn)算方法運(yùn)算器_第2頁(yè)](http://file4.renrendoc.com/view10/M02/3E/1C/wKhkGWWzdzaAIp95AAFwNSMRR-s7592.jpg)
![計(jì)算機(jī)組成原理運(yùn)算方法運(yùn)算器_第3頁(yè)](http://file4.renrendoc.com/view10/M02/3E/1C/wKhkGWWzdzaAIp95AAFwNSMRR-s7593.jpg)
![計(jì)算機(jī)組成原理運(yùn)算方法運(yùn)算器_第4頁(yè)](http://file4.renrendoc.com/view10/M02/3E/1C/wKhkGWWzdzaAIp95AAFwNSMRR-s7594.jpg)
![計(jì)算機(jī)組成原理運(yùn)算方法運(yùn)算器_第5頁(yè)](http://file4.renrendoc.com/view10/M02/3E/1C/wKhkGWWzdzaAIp95AAFwNSMRR-s7595.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章運(yùn)算方法與運(yùn)算器
運(yùn)算方法和運(yùn)算器本章內(nèi)容: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)算器本章小結(jié)運(yùn)算方法和運(yùn)算器2.1數(shù)據(jù)與文字的表示方法2.1.1數(shù)據(jù)格式2.1.2數(shù)的機(jī)器碼表示2.1.3字符與字符串的表示方法2.1.4漢字的表示方法2.1.5校驗(yàn)碼數(shù)據(jù)與文字的表示方法2.1.1數(shù)據(jù)格式
計(jì)算機(jī)中常用的數(shù)據(jù)表示格式有兩種:(1)定點(diǎn)格式(2)浮點(diǎn)格式
定點(diǎn)格式(小數(shù)點(diǎn)位置固定)容許的數(shù)值范圍有限,但要求的處理硬件比較簡(jiǎn)單。
浮點(diǎn)格式(小數(shù)點(diǎn)位置浮動(dòng))容許的數(shù)值范圍很大,但要求的處理硬件比較復(fù)雜。數(shù)據(jù)格式1.
定點(diǎn)數(shù)的表示方法定點(diǎn)表示:約定機(jī)器中所有數(shù)據(jù)的小數(shù)點(diǎn)位置是按約定固定不變的,小數(shù)點(diǎn)就不再使用記號(hào)“.”來(lái)表示。定點(diǎn)數(shù)據(jù)的形式:純小數(shù)或純整數(shù)。
(設(shè):定點(diǎn)數(shù)表示為x=x0x1x2…xn
其中:x0符號(hào)位,0代表正號(hào),1代表負(fù)號(hào))小數(shù)點(diǎn)的位置約定在符號(hào)位x0的后面(不顯示)小數(shù)點(diǎn)的位置約定在數(shù)值位xn的后面(不顯示)定點(diǎn)數(shù)的表示方法定點(diǎn)數(shù)例例:X=+1010110.純整數(shù):X=01010110.正數(shù),符號(hào)位取0Y=-1101001.純整數(shù):Y=11101001.負(fù)數(shù),符號(hào)位取1X=+0.11011Y=-0.10101符號(hào)位取0純小數(shù):X=0.11011符號(hào)位取1純小數(shù):X=1.10101純整數(shù):X=01010110符號(hào)位取0純整數(shù):Y=11101001符號(hào)位取1符號(hào)位取0純小數(shù):X=0.11011符號(hào)位取1純小數(shù):X=1.10101注意到:無(wú)論是整數(shù)或是小數(shù),在機(jī)器數(shù)的表示中,都不出現(xiàn)小數(shù)點(diǎn)“.”,只是約定其位置。定點(diǎn)數(shù)例(x0x1x2…xn
各位均為0時(shí)最小;各位均為1時(shí)最大)純小數(shù)的表示范圍:0≤|x|≤1-2-n
(2.1)
純整數(shù)的表示范圍為:
0≤|x|≤2n-1
(2.2)
目前計(jì)算機(jī)中多采用定點(diǎn)純整數(shù)表示,因此將定點(diǎn)數(shù)表示的運(yùn)算簡(jiǎn)稱為整數(shù)運(yùn)算。
定點(diǎn)數(shù)的表示方法2、浮點(diǎn)數(shù)的表示方法例:156.78 =15.678×101
=
1.5678×102
=0.15678×103=M×RE其中:M為尾數(shù);R為基數(shù);E為階碼(指數(shù))。二進(jìn)制數(shù)在定點(diǎn)計(jì)算機(jī)中,一般約定:尾數(shù)|M|<1.0,并按此原則確定各數(shù)據(jù)的浮點(diǎn)表示格式?!嗌侠?156.67=0.15678×103
(規(guī)格化表示法)同理:對(duì)于二進(jìn)制數(shù)+1011.1101=+0.10111101×2+4
=0.10111101×2+100=M×RE那么,計(jì)算機(jī)中究竟采用哪種數(shù)據(jù)形式?顯然存在多種數(shù)據(jù)形式浮點(diǎn)數(shù)的表示方法浮點(diǎn)數(shù)表示可見(jiàn): 一個(gè)機(jī)器浮點(diǎn)數(shù)由階碼E和尾數(shù)M及其符號(hào)位組成。約定:尾數(shù)M用定點(diǎn)小數(shù)表示,給出有效數(shù)字的位數(shù),M決定了浮點(diǎn)數(shù)的表示精度;
階碼E:用整數(shù)形式表示,指明小數(shù)點(diǎn)在數(shù)據(jù)中的位置,其決定了浮點(diǎn)數(shù)的表示范圍。∴浮點(diǎn)數(shù)的一般形式為:
浮點(diǎn)數(shù)表示按照IEEE754的標(biāo)準(zhǔn),32位浮點(diǎn)數(shù)和64位浮點(diǎn)數(shù)的標(biāo)準(zhǔn)格式為:其中:S=浮點(diǎn)數(shù)的符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)。
M=尾數(shù),23位,用純小數(shù)表示。E=階碼,8位,階符采用隱含方式,即采用移碼方式來(lái)表示正負(fù)指數(shù)。
其中:S=浮點(diǎn)數(shù)的符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)。
M=尾數(shù),52位,用純小數(shù)表示。E=階碼,11位,階符采用隱含方式,即采用移碼方式來(lái)表示正負(fù)指數(shù)。
浮點(diǎn)數(shù)表示幾點(diǎn)注釋:
為了提高數(shù)據(jù)的表示精度,當(dāng)尾數(shù)的值不為
0時(shí),其絕對(duì)值|M|應(yīng)≥0.5,即:尾數(shù)絕對(duì)值域的最高有效位應(yīng)為1,否則通過(guò)修改階碼同時(shí)左右移小數(shù)點(diǎn)的辦法,使其變成這一表示形式,這稱為浮點(diǎn)數(shù)的規(guī)格化表示。浮點(diǎn)數(shù)所表示的范圍顯然遠(yuǎn)比定點(diǎn)數(shù)大。以下兩種情況計(jì)算機(jī)都把該浮點(diǎn)數(shù)看成零值,稱為機(jī)器零。⑴當(dāng)浮點(diǎn)數(shù)的尾數(shù)M為0;(不論其階碼E為何值)⑵當(dāng)階碼E的值<Emin值時(shí)。(不管其尾數(shù)M為何值)
浮點(diǎn)數(shù)表示[解:]首先分別將整數(shù)和分?jǐn)?shù)部分轉(zhuǎn)換成二進(jìn)制數(shù):20.59375=10100.10011然后移動(dòng)小數(shù)點(diǎn),使其在第1,2位之間
10100.10011=1.010010011×24
小數(shù)點(diǎn)被左移了4位,于是得到:e=4
尾符
S=0,階碼
E=4+127=131,尾數(shù)
M=010010011最后得到32位浮點(diǎn)數(shù)的二進(jìn)制存儲(chǔ)格式為:01000001101001001100000000000000
=(41A4C000)16此“1”被隱藏[例]:將十進(jìn)制數(shù)20.59375轉(zhuǎn)換成位浮點(diǎn)數(shù)的二進(jìn)制格式來(lái)存儲(chǔ)。
3.十進(jìn)制數(shù)串的表示方法十進(jìn)制數(shù)串在計(jì)算機(jī)內(nèi)主要有兩種表示形式:
1.字符串形式字符串形式:每一個(gè)十進(jìn)制的數(shù)位或符號(hào)位都用一個(gè)字節(jié)存放。如:+12
+12-38-382.壓縮的十進(jìn)制數(shù)串形式壓縮的十進(jìn)制數(shù)串形式:一個(gè)字節(jié)存放兩個(gè)十進(jìn)制的數(shù)位。如:+123、-12
123C(+123)012D(-12)十進(jìn)制數(shù)的表示方法在傳統(tǒng)的計(jì)算機(jī)體系結(jié)構(gòu)中,用指令本身來(lái)說(shuō)明操作數(shù)據(jù)的類型。如:定點(diǎn)加法表示操作數(shù)是純小數(shù)或純整數(shù);浮點(diǎn)加法表示操作數(shù)是浮點(diǎn)數(shù);十進(jìn)制加法表示操作數(shù)是BCD數(shù)。由于操作數(shù)據(jù)類型不同,要設(shè)三種不同的指令(操作碼)來(lái)加以區(qū)分。4.
自定義數(shù)據(jù)表示數(shù)串的表示自定義數(shù)據(jù)表示則用數(shù)據(jù)本身來(lái)說(shuō)明數(shù)據(jù)類型。表示形式有兩種,即標(biāo)志符數(shù)據(jù)表示和描述符數(shù)據(jù)表示。標(biāo)志符數(shù)據(jù)表示:要求對(duì)每一個(gè)數(shù)據(jù)都附加標(biāo)志符,其格式如下:標(biāo)識(shí)符數(shù)據(jù)其中:標(biāo)志符指明后面的數(shù)據(jù)所具有的類型,如整數(shù)、浮點(diǎn)數(shù)、BCD數(shù)、字符串等。數(shù)串的表示描述符數(shù)據(jù)表示:主要用來(lái)描述多維結(jié)構(gòu)的數(shù)據(jù)類型,如向量、矩陣、記錄等。其格式為:描述符標(biāo)志位特征標(biāo)記數(shù)據(jù)塊長(zhǎng)度數(shù)據(jù)塊起始地址
指明這是一個(gè)數(shù)據(jù)描述符指明數(shù)據(jù)的特征指明數(shù)組中元素個(gè)數(shù)指明數(shù)據(jù)塊的首地址注:描述符指令中并未給出具體數(shù)據(jù),僅指出數(shù)據(jù)的性質(zhì)和存儲(chǔ)地點(diǎn)。標(biāo)志符與描述符表示的區(qū)別:參見(jiàn)教材P23數(shù)串的表示2.1.2數(shù)的機(jī)器碼表示
基本思想:把符號(hào)位和數(shù)字位一起編碼來(lái)表示一個(gè) 實(shí)際的數(shù)。主要表示方法有:原碼、補(bǔ)碼、反碼、移碼等。各種編碼表示的數(shù)稱為機(jī)器數(shù)或機(jī)器碼;其對(duì)應(yīng)的真實(shí)數(shù)值稱為該編碼對(duì)應(yīng)的真值。數(shù)的機(jī)器碼表示1.原碼表示法若定點(diǎn)小數(shù)為:x=±0.x1x2…xn,則其原碼表示的定義是:式中[x]原是機(jī)器數(shù),x是真值。例如,x=+0.1001,則[x]原=0.1001x=-0.1001,則[x]原=1.1001數(shù)值符號(hào)數(shù)的原碼表示x1>x≥01-x=1+|x|0≥
x>-1對(duì)于定點(diǎn)整數(shù)
x=±x1x2…xn,則原碼的定義是:對(duì)于定點(diǎn)整數(shù),其原碼形式為:
[x]原=x0x1x2…xn,數(shù)的原碼表示x2n>x≥02n-x=2n+|x|
0≥x>-2n(2.8)符號(hào)數(shù)值例如,x=+11001,則[x]原=011001x=-10101,則[x]原=110101數(shù)的原碼表示注意到:“+0”、“-0”
原碼在機(jī)器中有兩種形式:對(duì)于定點(diǎn)小數(shù):[+0]原=0.000…0[-0]原=1.000…0對(duì)于定點(diǎn)整數(shù):[+0]原=0000…0.[-0]原=1000…0.
∴
對(duì)于定點(diǎn)小數(shù),其真值與原碼之間的轉(zhuǎn)換一般符合下面的規(guī)律:
x=+0.x1x2…xn[x]原=0.x1x2…xnx=-0.x1x2…xn[x]原=1.x1x2…xn
對(duì)于定點(diǎn)整數(shù),其真值與原碼之間的轉(zhuǎn)換一般符合下面的規(guī)律:
x=+x1x2…xn[x]原=0x1x2…xn.x=-x1x2…xn[x]原=1x1x2…xn.
原碼表示法的主要特點(diǎn)是簡(jiǎn)單、易懂,但它的最大缺點(diǎn)是:由于數(shù)值部分采用絕對(duì)值表示,因而使得加減法運(yùn)算比較復(fù)雜,而加減法運(yùn)算正是計(jì)算機(jī)中最常使用的運(yùn)算。所以,必須探討解決方法——補(bǔ)碼則正是一種解決方法。數(shù)的原碼表示2.補(bǔ)碼表示法
補(bǔ)碼的概念(以鐘表對(duì)時(shí)為例)
假設(shè)現(xiàn)在的標(biāo)準(zhǔn)時(shí)間為4點(diǎn)正;而有一只表已經(jīng)7點(diǎn)了,為了校準(zhǔn)時(shí)間,可以采用兩種方法:一是將時(shí)針退3格(7-3=4);另一方法是將時(shí)針向前撥9格(7+9=16----4)。顯然:這兩種方法都能對(duì)準(zhǔn)到4點(diǎn),由此可以看出,減3和加9是等價(jià)的。所以稱:當(dāng)模數(shù)Mod=12時(shí),9是(-3)補(bǔ)碼。用數(shù)學(xué)公式表示:-3=+9 (mod12)“?!北硎颈粊G掉的數(shù)值。上式在數(shù)學(xué)上稱為同余式。
∴設(shè)某數(shù)為x,當(dāng)Mod=12時(shí),x-3=x+9、x+7=x-5都是等價(jià)的。從這里可以得到一個(gè)啟示,就是當(dāng)負(fù)數(shù)用補(bǔ)碼表示時(shí),可以把減法轉(zhuǎn)化為加法。數(shù)的補(bǔ)碼表示補(bǔ)碼的定義:1、定點(diǎn)小數(shù)例如
x=+0.1011,則[x]補(bǔ)=0.1011;x=-0.1011,則[x]補(bǔ)=10+x=10.0000-0.1011
=1.0101正數(shù)的補(bǔ)碼就是本身負(fù)數(shù)的補(bǔ)碼需作運(yùn)算數(shù)的補(bǔ)碼表示x1>x≥02+x=2-|x|0≥
x≥-1(mod2)10.0000
-0.10111.0101
可見(jiàn),根據(jù)補(bǔ)碼定義,求負(fù)數(shù)的補(bǔ)碼時(shí)需作一次減法運(yùn)算,這顯然不是補(bǔ)碼方法的初衷。后面將介紹反碼表示法可以解決負(fù)數(shù)的求補(bǔ)問(wèn)題。2、定點(diǎn)整數(shù)例:已知 x=+10111, y=-11011,求[x]補(bǔ)、[y]補(bǔ)
(n=5)按定義:[x]補(bǔ)=010111 [y]補(bǔ)=25+1+y=1000000-11011=100101數(shù)的補(bǔ)碼表示x2n
>x≥0
2n+1+x=2n+1-|x|0≥
x≥-2n(mod
2n+1)
100000011011100101注:上式機(jī)器數(shù)的位數(shù)為n+1數(shù)的補(bǔ)碼表示注:0的補(bǔ)碼只有一種形式
對(duì)于定點(diǎn)小數(shù):[+0]補(bǔ)=[-0]補(bǔ)=0.0000
對(duì)于定點(diǎn)整數(shù):[+0]補(bǔ)=[-0]補(bǔ)=00000.
因此,補(bǔ)碼的表示范圍相對(duì)于原碼、反碼來(lái)講多一種,定點(diǎn)小數(shù)可以表示-1,n+1位定點(diǎn)整數(shù)可以表示-2n。3.反碼表示法二進(jìn)制數(shù)求反:就是二進(jìn)制的各位數(shù)碼0變?yōu)?,1變?yōu)?。即:若xi=0,則=1。若xi=1,則=0.對(duì)定點(diǎn)小數(shù),反碼的定義參見(jiàn)書(shū)(2.11)式。數(shù)的反碼表示正數(shù)的反碼就是本身負(fù)數(shù)的反碼則是:符號(hào)位為1,數(shù)值位求反。x1>x≥0(2-
2-n)
+x=(2-
2-n)_|x|0≥
x>-1(2.11)由式(2.11)可以得出:[x]反+|x|=1.111…1=10.0…0-0.00…1=2-
2-n
得出:
[x]反=(2-2-n)+x
0≥
x>-1數(shù)的反碼表示比較反碼與補(bǔ)碼的公式
[x]反=(2-2-n)+x
[x]補(bǔ)=2+x可得到:[x]補(bǔ)=[x]反+2-n由此可知一個(gè)由反碼求補(bǔ)碼的重要公式,即:一個(gè)負(fù)數(shù)的補(bǔ)碼,可以通過(guò)將該數(shù):符號(hào)位置1,其余取反,然后在最末位(2-n
)上加1
的方法直接獲得。數(shù)的補(bǔ)碼與反碼關(guān)系例:已知 x=+0.1011, y=-0.1101,求[x]補(bǔ)、[y]補(bǔ)按定義:[x]補(bǔ)=0.1011 (注:正數(shù)的補(bǔ)碼就是該數(shù)本身)
[y]補(bǔ)=1.0010+0.0001 =1.0011 [y]反2-n注意到:0的反碼不唯一即:[+0]反=0.00…0;[-0]反=1.11…1數(shù)的補(bǔ)碼與反碼關(guān)系對(duì)定點(diǎn)整數(shù),反碼表示的定義為:也可以用同樣的方法得出定點(diǎn)整數(shù)的補(bǔ)碼與反碼的關(guān)系,找出利用反碼求定點(diǎn)整數(shù)補(bǔ)碼的方法。x2n
>x≥0
(2n+1-1)+x0≥
x≥-2n(2.13)_數(shù)的補(bǔ)碼與反碼關(guān)系
求一個(gè)負(fù)數(shù)的補(bǔ)碼的另一種有效的轉(zhuǎn)換方法:
對(duì)于負(fù)數(shù),將原碼的符號(hào)位不變(或直接將符號(hào)位置1),數(shù)值部分由低位向高位轉(zhuǎn)換,對(duì)開(kāi)始遇到的0和第一個(gè)1取其原值不變,第一個(gè)1以后的各位均取反。例:y=-0.110100,求[y]補(bǔ)解:[y]補(bǔ)=1.001
100保持不變逐位取反[y]反=1.001011[y]補(bǔ)=1.001011+0.000001=1.001100數(shù)的補(bǔ)碼與反碼關(guān)系4.移碼表示法
在計(jì)算機(jī)中,移碼通常用于表示浮點(diǎn)數(shù)的階碼。由于階碼一般取整數(shù),所以移碼通常只用于整數(shù)的表示。對(duì)定點(diǎn)整數(shù),移碼的定義是:
[x]移=2n+x
2n>x≥-2n(n為移碼數(shù)值部分的位數(shù))移碼的表示方法例:若階碼數(shù)值部分為5位,以x表示真值,則
[x]移=25+x
25>x≥-25
又例:當(dāng)正數(shù)x=+10101時(shí),[x]移=1,10101
當(dāng)負(fù)數(shù)x=-10101時(shí),[x]移=25+x=25-10101=0,01011。注意到:
移碼中的逗號(hào)不是小數(shù)點(diǎn),而是表示左邊一位是符號(hào)位。顯然,移碼中符號(hào)位x0表示的規(guī)律與原碼、補(bǔ)碼、反碼相反。移碼在數(shù)值上與補(bǔ)碼一致,但是符號(hào)位與補(bǔ)碼正好相反!移碼的表示方法機(jī)器碼表示法小結(jié):在數(shù)據(jù)的四種機(jī)器碼表示法中:正數(shù)的原碼、反碼、補(bǔ)碼等于真值,只有負(fù)數(shù)才分別有不同的表示方法。補(bǔ)碼和移碼的0只有一種表示方法,因此其表示范圍相對(duì)于原碼和反碼多一種,定點(diǎn)小數(shù)可表示-1(移碼沒(méi)有小數(shù)形式),正數(shù)可表示-2n。移碼表示法主要用于表示浮點(diǎn)數(shù)的階碼,可以直接比較大小。表示范圍和補(bǔ)碼相同,只有最高位相反。機(jī)器碼表示法小結(jié)由于補(bǔ)碼表示對(duì)加減法運(yùn)算十分方便,因此目前機(jī)器中廣泛采用補(bǔ)碼表示法。在這類機(jī)器中數(shù)用補(bǔ)碼表示,補(bǔ)碼存儲(chǔ),補(bǔ)碼運(yùn)算。(也有些機(jī)器,數(shù)用原碼進(jìn)行存儲(chǔ)和傳送,運(yùn)算時(shí)改用補(bǔ)碼。還有些機(jī)器在做加減法時(shí)用補(bǔ)碼運(yùn)算,在做乘除法時(shí)用原碼運(yùn)算)機(jī)器碼表示法小結(jié)[例3]以定點(diǎn)整數(shù)為例,用數(shù)軸形式說(shuō)明原碼、反碼、補(bǔ)碼表示范圍和可能的數(shù)碼組合情況。
[解:]
原碼、反碼、補(bǔ)碼表示分別示于下圖。與原碼、反碼不同,在補(bǔ)碼表示中,“0”只有一種形式,
且用補(bǔ)碼表示負(fù)數(shù)時(shí)范圍可到-2n
。
機(jī)器碼表示法小結(jié)[例4]將十進(jìn)制真值(-127、-1、0、+1、+127)列表表示成二進(jìn)制數(shù)及原碼、反碼、補(bǔ)碼、移碼值。
[解:]
二進(jìn)制真值x及其諸碼值列于下表,其中0在[x]原[x]反中有兩種表示。由表中數(shù)據(jù)可知,補(bǔ)碼值與移碼值差別僅在于符號(hào)位不同。機(jī)器碼表示法小結(jié)[例5]
設(shè)機(jī)器字長(zhǎng)16位,定點(diǎn)表示,尾數(shù)15位,數(shù)符1位,問(wèn):
(1)定點(diǎn)原碼整數(shù)表示時(shí),最大正數(shù)是多少?最小負(fù)數(shù)是多少?
(2)定點(diǎn)原碼小數(shù)表示時(shí),最大正數(shù)是多少?最小負(fù)數(shù)是多少?
[解:]定點(diǎn)原碼整數(shù)表示
最大正數(shù)值=0111111111111111
=+(215-1)10=(+32767)10
最小負(fù)數(shù)值=1111111111111111
=-(215-1)10=(-32767)10(15個(gè)1)機(jī)器碼表示法小結(jié)(2)定點(diǎn)原碼小數(shù)表示
最大正數(shù)值=(+0.111...11)=(1-2-15)10
最小負(fù)數(shù)值=(-0.111..11)=-(1-2-15)10
[例6]假設(shè)由S,E,M三個(gè)域組成的一個(gè)32位二進(jìn)制字所表示的非零規(guī)格化浮點(diǎn)數(shù)x,真值表示為:
x=(-1)s×(1.M)×2E-128
問(wèn):它所表示的規(guī)格化的最大正數(shù)、最小正數(shù)、最大負(fù)數(shù)、最小負(fù)數(shù)是多少?
[解:](1)最大正數(shù)11111111111111111111111111111110x=[1+(1-2-23)]×2127(2)最小正數(shù)
00000000000000000000000000000000x=1.0×2-128機(jī)器碼表示法小結(jié)(4)最大負(fù)數(shù)
00000000000000000000000000000000x=-1.0×2-128
11111111111111111111111111111111x=-[1+(1-2-23)]×2127
(3)最小負(fù)數(shù)機(jī)器碼表示法小結(jié)2.1.3字符與字符串的表示方法1.字符的表示方法
目前國(guó)際上普遍采用的字符系統(tǒng)是七單位的ASCII碼(美國(guó)國(guó)家信息交換標(biāo)準(zhǔn)字符碼),它包括10個(gè)十進(jìn)制數(shù)碼,26個(gè)英文字母和一定數(shù)量的專用符號(hào),如$,%,+,=等,共128個(gè)元素,因此二進(jìn)制編碼需7位,加一位偶校驗(yàn)位,共8位一個(gè)字節(jié)。
ASCII碼規(guī)定8個(gè)二進(jìn)制位的最高一位(b7)恒為0,余下的7位可以給出128個(gè)編碼,表示128個(gè)不同的字符。字符和字符串的表示方法表2.1ASCII字符編碼表0000010100111001011101110000NULDELSP0@Pp0001SOHDC1!1AQaq0010STXDC2“2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111DELETB7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\1|1101CRGS-=M]m}1110SORS.>Nn~1111SIUS/?O_oDELb3b2b1b0位b6b5b4位2.字符串字符串:是指連續(xù)的一串字符,通常方式下,它們依次占用主存中連續(xù)的多個(gè)字節(jié),每個(gè)字節(jié)存一個(gè)字符。[例]將字符串:
IF└┘A>B└┘THEN└┘READ(C)
從高位字節(jié)到低位字節(jié)依次存在主存中。[解:]設(shè):主存單元長(zhǎng)度由4個(gè)字節(jié)組成。每個(gè)字節(jié)中存放相應(yīng)字符的ASCII值,文字表達(dá)式中的空格“└┘”在主存中也占一個(gè)字節(jié)的位置。因而每個(gè)字節(jié)分別存放十進(jìn)制的73、70、32、65、62、66、32、84、72、69、78、32、82、69、65、68、40、67、41、32。
字符和字符串的表示方法IF空A>B空THEN空READ(C)空主存各字節(jié)單元內(nèi)容字符和字符串的表示方法2.1.4漢字的表示方法1.漢字的輸入編碼包括:數(shù)字碼、拼音碼和字形碼數(shù)字碼:常用的是國(guó)標(biāo)區(qū)位碼,用數(shù)字串代表一個(gè)漢字輸入。區(qū)位碼是將國(guó)家標(biāo)準(zhǔn)局公布的6763個(gè)兩級(jí)漢字分為94個(gè)區(qū),每個(gè)區(qū)分94位,實(shí)際上把漢字表示成二維數(shù)組,每個(gè)漢字在數(shù)組中的下標(biāo)就是區(qū)位碼。區(qū)碼和位碼各兩位十進(jìn)制數(shù)字,因此輸入一個(gè)漢字需按鍵四次。數(shù)字編碼輸入的優(yōu)點(diǎn)是無(wú)重碼,且輸入碼與內(nèi)部編碼的轉(zhuǎn)換比較方便,。缺點(diǎn)是代碼難以記憶。拼音碼:拼音碼是以漢字拼音為基礎(chǔ)的輸入方法。使用簡(jiǎn)單方便,但漢字同音字太多,輸入重碼率很高,同音字選擇影響了輸入速度。漢字的表示方法(漢字的輸入編碼)字形碼:字形編碼是用漢字的形狀來(lái)進(jìn)行的編碼(例:五筆字型)。把漢字的筆劃部件用字母或數(shù)字進(jìn)行編碼,按筆劃的順序依次輸入,就能表示一個(gè)漢字。為了加快輸入速度,在上述方法基礎(chǔ)上,發(fā)展了詞組輸入\聯(lián)想輸入等多種快速輸入方法。但是都利用了鍵盤進(jìn)行“手動(dòng)”輸入。理想的輸入方式是利用語(yǔ)音或圖象識(shí)別技術(shù)“自動(dòng)”將拼音或文本輸入到計(jì)算機(jī)內(nèi),使計(jì)算機(jī)能認(rèn)識(shí)漢字,聽(tīng)懂漢語(yǔ),并將其自動(dòng)轉(zhuǎn)換為機(jī)內(nèi)代碼表示。目前這種理想已經(jīng)成為現(xiàn)實(shí)。
漢字的表示方法(漢字的輸入編碼)2.漢字內(nèi)碼
漢字內(nèi)碼是用于漢字信息的存儲(chǔ)、交換、檢索等操作的機(jī)內(nèi)代碼,一般采用兩個(gè)字節(jié)表示。英文字符的機(jī)內(nèi)代碼是七位的ASCII碼,當(dāng)用一個(gè)字節(jié)表示時(shí),最高位為“0”。為了與英文字符能相互區(qū)別,漢字機(jī)內(nèi)代碼中兩個(gè)字節(jié)的最高位均規(guī)定為“1”。注意:有些系統(tǒng)中字節(jié)的最高位用于奇偶校驗(yàn)位,這種情況下用三個(gè)字節(jié)表示漢字內(nèi)碼。漢字的表示方法(漢字的內(nèi)碼)3.漢字字模碼字模碼是用點(diǎn)陣表示的漢字字形代碼,它是漢字的輸出形式。。例如:字模碼漢字的表示方法(漢字字模碼)此例,漢字的字模碼為:16位×16位=32字節(jié)注意到:字模點(diǎn)陣只能用來(lái)構(gòu)成漢字庫(kù),而不能用于機(jī)內(nèi)存儲(chǔ)。字庫(kù)中存儲(chǔ)了每個(gè)漢字的點(diǎn)陣代碼,用于漢字的顯示輸出或打印輸出。當(dāng)顯示輸出或打印輸出時(shí)才檢索字庫(kù),輸出字模點(diǎn)陣,得到字形。漢字的輸入編碼、漢字內(nèi)碼、字模碼是計(jì)算機(jī)中用于輸入、內(nèi)部處理、輸出三種不同用途的編碼,不要混為一談。漢字的表示方法(漢字字模碼)
各種因素常常導(dǎo)致計(jì)算機(jī)在處理信息過(guò)程中出現(xiàn)錯(cuò)誤。為了防止錯(cuò)誤,可將信號(hào)采用專門的邏輯線路進(jìn)行編碼以檢測(cè)錯(cuò)誤,甚至校正錯(cuò)誤。2.1.5校驗(yàn)碼
最簡(jiǎn)單且應(yīng)用廣泛的檢錯(cuò)碼方法是奇偶校驗(yàn)法,即:采用一位校驗(yàn)位的奇校驗(yàn)或偶校驗(yàn)的方法。設(shè)x=(x0x1…xn-1)是一個(gè)n位字,則奇校驗(yàn)位C定義為:C=x0⊕x1⊕…⊕xn-1,式中⊕代表按位加,只有當(dāng)x中包含有奇數(shù)個(gè)1時(shí),才使C=1,即C=0。同理,偶校驗(yàn)位C定義為:C=x0⊕x1⊕…⊕xn-1
即x中包含偶數(shù)個(gè)1時(shí),才使C=0。效驗(yàn)碼
假設(shè)一個(gè)字x從部件A傳送到部件B。在源點(diǎn)A,校驗(yàn)位C可用上面公式算出來(lái),并合在一起將(x0x1…xn-1C)送到B,采用偶效驗(yàn)。假設(shè),在B點(diǎn)真正接收到的是x=(x‘0x’1…x‘n-1C’),然后計(jì)算:F=x'0⊕x'1⊕…⊕x'n-1⊕C‘
若F=1,意味著收到的信息有錯(cuò),若F=0,表明x字傳送正確。奇偶校驗(yàn)可提供奇數(shù)個(gè)錯(cuò)誤檢測(cè),但無(wú)法檢測(cè)偶數(shù)個(gè)錯(cuò)誤,更無(wú)法識(shí)別錯(cuò)誤信息的位置。(循環(huán)校驗(yàn)碼CRC可解決此問(wèn)題)效驗(yàn)碼[例7]見(jiàn)書(shū) P30數(shù)據(jù)偶校驗(yàn)編碼C奇校驗(yàn)編碼C101010100101010000000000011111111111111110101010-01010100-00000000-01111111-11111111-10101010-01010100-00000000-01111111-11111111-效驗(yàn)碼[解]假如校驗(yàn)位后傳送的數(shù)碼為:數(shù)據(jù)偶校驗(yàn)編碼C奇校驗(yàn)編碼C1010101001010100000000000111111111111111101010100010101001000000000011111111111111110101010101010101000000000001011111110111111111效驗(yàn)碼2.2定點(diǎn)加法減法運(yùn)算
2.2.1補(bǔ)碼加法2.2.2補(bǔ)碼減法2.2.3溢出概念與檢驗(yàn)方法2.2.4基本的二進(jìn)制加法、減法器2.2.5十進(jìn)制加法器定點(diǎn)加減法運(yùn)算2.2.1補(bǔ)碼加法補(bǔ)碼加法的公式是:[x]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)(mod2)
現(xiàn)分四種情況來(lái)證明。假設(shè)采用定點(diǎn)小數(shù)表示,因此證明的先決條件是:︱x︱﹤1,︱y︱﹤1,︱x+y︱﹤1。(1)x﹥0,y﹥0,則x+y﹥0。
相加兩數(shù)都是正數(shù),故其和也一定是正數(shù)。正數(shù)的補(bǔ)碼和原碼是一樣的,可得:
[x]補(bǔ)+[y]補(bǔ)=x+y=[x+y]補(bǔ)
(mod2)補(bǔ)碼的加法(2)x﹥0,y﹤0,則x+y>0或x+y<0。相加的兩數(shù)一個(gè)為正,一個(gè)為負(fù),因此相加結(jié)果有正、負(fù)兩種可能。根據(jù)補(bǔ)碼定義,
∵
[x]補(bǔ)=x(正),
[y]補(bǔ)=2+y(負(fù))
∴[x]補(bǔ)+[y]補(bǔ)=x+2+y=2+(x+y)當(dāng)x+y>0時(shí),2+(x+y)>2,進(jìn)位2必丟失,又因(x+y)>0,所以:
[x]補(bǔ)+[y]補(bǔ)=x+y=[x+y]補(bǔ)
(mod2)當(dāng)x+y<0時(shí),2+(x+y)<2,又因(x+y)<0,所以:
[x]補(bǔ)+[y]補(bǔ)=2+(x+y)=[x+y]補(bǔ)
(mod2)補(bǔ)碼的加法(3)x<0,y>0,則x+y>0或x+y<0。這種情況和第2種情況一樣,把x和y的位置對(duì)調(diào)即得證。(4)x<0,y<0,則x+y<0。相加兩數(shù)都是負(fù)數(shù),則其和也一定是負(fù)數(shù)?!遊x]補(bǔ)=2+x,
[y]補(bǔ)=2+y∴[x]補(bǔ)+[y]補(bǔ)=2+x+2+y=2+(2+x+y)上式右邊分為”2”和(2+x+y)兩部分.既然(x+y)是負(fù)數(shù),而其絕對(duì)值又小于1,那么(2+x+y)就一定是小于2而大于1的數(shù),進(jìn)位”2”必丟失.又因(x+y)<0,所以[x]補(bǔ)+[y]補(bǔ)=2+(x+y)=[x+y]補(bǔ)
(mod2)至此我們證明了,在模2意義下,任意兩數(shù)的補(bǔ)碼之和等于該兩數(shù)之和的補(bǔ)碼.這是補(bǔ)碼加法的理論基礎(chǔ),其結(jié)論也適用于定點(diǎn)整數(shù)。補(bǔ)碼的加法[例]:[x]補(bǔ)=0.1001,[y]補(bǔ)=0.0101,計(jì)算x+y=?[x]補(bǔ)
0.1001+[y]補(bǔ)
0.0101
[x+y]補(bǔ)
0.1110
所以x+y=+0.1110
補(bǔ)碼的加法[例]: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最高位1自行丟失可見(jiàn),補(bǔ)碼加法的特點(diǎn)為:
1、符號(hào)位作為數(shù)的一部分直接參加運(yùn)算;
2、要在模2的意義下相加,即超過(guò)2的進(jìn)位要自動(dòng)丟掉。整數(shù)的計(jì)算同樣適合,只是模不同。補(bǔ)碼的加法2.2.2補(bǔ)碼減法
由補(bǔ)碼的原理可知,補(bǔ)碼可以通過(guò)加法器來(lái)完成減法計(jì)算,進(jìn)而簡(jiǎn)化運(yùn)算器的結(jié)構(gòu)。補(bǔ)碼的減法公式如下:[x-y]補(bǔ)=[x]補(bǔ)-[y]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ)公式的證明簡(jiǎn)單,只需證明:[-y]補(bǔ)=-[y]補(bǔ)即可。(見(jiàn)書(shū)P32)補(bǔ)碼的減法補(bǔ)碼的減法
現(xiàn)證明如下:∵[x+y]補(bǔ)=[x]補(bǔ)+[y]補(bǔ)
(mod2)∴[y]補(bǔ)=[x+y]補(bǔ)-[x]補(bǔ)
(2.19a)∵[x-y]補(bǔ)=[x+(-y)]補(bǔ)=[x]補(bǔ)+[-y]補(bǔ)∴[-y]補(bǔ)=[x-y]補(bǔ)-[x]補(bǔ)
(2.19b)
將式(2.19a)與(2.19b)相加,得
[-y]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)+[x-y]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)=[x+y+x-y]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)
=[x+x]補(bǔ)-[x]補(bǔ)-[x]補(bǔ)=0
故:[-y]補(bǔ)=
-[y]補(bǔ)(2.20)補(bǔ)碼的減法剩下的問(wèn)題:只要給出[-y]補(bǔ)如何求取即可。已知[y]補(bǔ),求取[-y]補(bǔ)的方法:
對(duì)[y]補(bǔ)包括符號(hào)位一起,各位求反且最末位加1,即可得到[-y]補(bǔ)。
即:[-y]補(bǔ)=[y]補(bǔ)+2-n
其中符號(hào)[y]補(bǔ)表示對(duì)[y]補(bǔ)做:包括符號(hào)位在內(nèi)的求反操作,2-n表示最末位的1。連同符號(hào)位取反+2-n為末位+1[例10]
已知x1=-0.1110,x2=+0.1101,
求:[x1]補(bǔ),[-x1]補(bǔ),
[x2]補(bǔ),[-x2]補(bǔ)。[解:]
[x1]補(bǔ)=1.0010
[-x1]補(bǔ)=[x1]補(bǔ)+2-4=0.1101+0.0001=0.1110
[x2]補(bǔ)=0.1101
[-x2]補(bǔ)=[x2]補(bǔ)+2-4=1.0010+0.0001=1.0011補(bǔ)碼的減法[例11]
x=+0.1101,y=+0.0110,求x-y。[解]:[x]補(bǔ)=0.1101
[y]補(bǔ)=0.0110
[-y]補(bǔ)=1.1010[x]補(bǔ)
0.1101+[-y]補(bǔ)
1.1010
[x-y]補(bǔ)
10.0111所以:
x-y=+0.0111補(bǔ)碼的減法[又例]
x=+0.0111,y=-0.0110,求x-y。補(bǔ)碼的減法[解]:
[x]補(bǔ)=0.0111
[y]補(bǔ)=1.1010
[-y]補(bǔ)=0.0110
[x]補(bǔ)
0.0111+[-y]補(bǔ)
0.0110
[x-y]補(bǔ)
0.1101>0所以:x-y=+0.1101[又例]
x=+0.0110,y=+0.1110,求x-y。[解]:
[x]補(bǔ)=0.0110
[y]補(bǔ)=0.1110
[-y]補(bǔ)=1.0010
[x]補(bǔ)
0.0110+[-y]補(bǔ)
1.0010
[x-y]補(bǔ)
1.1000<0所以:
x-y=-0.1000補(bǔ)碼的減法2.2.3溢出概念與檢測(cè)方法
以定點(diǎn)小數(shù)為例:在定點(diǎn)小數(shù)機(jī)器中,數(shù)的表示范圍為|x|<1.在運(yùn)算過(guò)程中如出現(xiàn)大于1的現(xiàn)象,稱為“溢出”。(這在定點(diǎn)機(jī)中是不允許的)
機(jī)器定點(diǎn)小數(shù)表示特征:兩個(gè)正數(shù)相加,結(jié)果為負(fù)(即:大于機(jī)器所能表示的最大正數(shù)),稱為上溢。兩個(gè)負(fù)數(shù)相加,結(jié)果為正(即:小于機(jī)器所能表示的最小負(fù)數(shù)),稱為下溢。溢出概念與檢測(cè)方法[例12]
x=+0.1011,y=+0.1001,求x+y。[解:]
[x]補(bǔ)=0.1011,[y]補(bǔ)=0.1001[x]補(bǔ)
0.1011+[y]補(bǔ)
0.1001[x+y]補(bǔ)
1.0100
兩正數(shù)相加,結(jié)果為負(fù),顯然錯(cuò)誤。(運(yùn)算中出現(xiàn)了“上溢”)溢出概念與檢測(cè)方法有進(jìn)位無(wú)進(jìn)位[又例]
x=+0.1011,y=+0.0010,求x+y。[解:]
[x]補(bǔ)=0.1011,[y]補(bǔ)=0.1001[x]補(bǔ)
0.1011+[y]補(bǔ)
0.0010[x+y]補(bǔ)
0.1101兩正數(shù)相加,結(jié)果無(wú)溢出溢出概念與檢測(cè)方法無(wú)進(jìn)位無(wú)進(jìn)位[例13]
x=-0.1101,y=-0.1011,求x+y。[解:]
[x]補(bǔ)=1.0011[y]補(bǔ)=1.0101
[x]補(bǔ)
1.0011
+[y]補(bǔ)
1.0101[x+y]補(bǔ)
0.1000兩負(fù)數(shù)相加,結(jié)果為正,顯然錯(cuò)誤。(運(yùn)算中出現(xiàn)了“下溢”)溢出概念與檢測(cè)方法無(wú)進(jìn)位有進(jìn)位[又例]
x=-0.1101,y=-0.0010,求x+y。[解:]
[x]補(bǔ)=1.0011[y]補(bǔ)=1.1110
[x]補(bǔ)
1.0011
+[y]補(bǔ)
1.1110[x+y]補(bǔ)
1.0001兩負(fù)數(shù)相加,結(jié)果為負(fù),無(wú)溢出。溢出概念與檢測(cè)方法有進(jìn)位有進(jìn)位產(chǎn)生“溢出”的原因:
分析可知,當(dāng)最高有效數(shù)值位的運(yùn)算進(jìn)位與符號(hào)位的運(yùn)算進(jìn)位不一致時(shí),將產(chǎn)生運(yùn)算“溢出”。進(jìn)一步結(jié)論:
當(dāng)最高有效位產(chǎn)生進(jìn)位而符號(hào)位無(wú)進(jìn)位時(shí),產(chǎn)生上溢;當(dāng)最高有效位無(wú)進(jìn)位而符號(hào)位有進(jìn)位時(shí),產(chǎn)生下溢。溢出概念與檢測(cè)方法“溢出”檢測(cè)方法:
為了判斷“溢出”是否發(fā)生,可采用兩種檢測(cè)的方法。第一種方法:采用雙符號(hào)位法,這稱為“變形補(bǔ)碼”或“模4補(bǔ)碼”,從而可使模2補(bǔ)碼所能表示的數(shù)的范圍擴(kuò)大一倍。變形補(bǔ)碼定義為(mod4)
:x2>x≥04+x=4-|x|0≥
x≥-2(2.22)溢出概念與檢測(cè)方法或用同余式表示:[x]補(bǔ)=4+x(mod4)下式也同樣成立:
[x]補(bǔ)+[y]補(bǔ)=[x+y]補(bǔ)
(mod4)
1.兩個(gè)符號(hào)位都看作數(shù)碼一樣參加運(yùn)算
2.兩數(shù)進(jìn)行以4位模的加法,即最高符號(hào)位上產(chǎn)生的進(jìn)位要丟掉。
采用變形補(bǔ)碼后,如果兩個(gè)數(shù)相加后,其結(jié)果的符號(hào)位出現(xiàn)“01”或“10”兩種組合時(shí),表示發(fā)生溢出。這是因?yàn)閮蓚€(gè)絕對(duì)值小于1的數(shù)相加,其結(jié)果不會(huì)大于或等于2。所以,最高符號(hào)位所表示的是結(jié)果的正確符號(hào)。溢出概念與檢測(cè)方法為了得到兩數(shù)變形補(bǔ)碼之和等于兩數(shù)之和的變形補(bǔ)碼,
樣必須:[例14]x=+0.1100,y=+0.1000,求x+y。溢出概念與檢測(cè)方法
[解]
:[x]補(bǔ)=00.1100,
[y]補(bǔ)=00.1000
[x]補(bǔ)
00.1100
+[y]補(bǔ)
00.1000
01.0100
兩個(gè)符號(hào)位出現(xiàn)“01”,表示已溢出,即結(jié)果大于+1。上溢[又例]x=+0.1100,y=+0.0001,求x+y。溢出概念與檢測(cè)方法
[解]
:[x]補(bǔ)=00.1100,
[y]補(bǔ)=00.1000
[x]補(bǔ)
00.1100
+[y]補(bǔ)
00.0001
00.1101
兩個(gè)符號(hào)位=“00”,表示無(wú)溢出。[例15]
x=-0.1100,y=-0.1000,求x+y溢出概念與檢測(cè)方法
[解]
:[x]補(bǔ)=11.0100,
[y]補(bǔ)=11.1000
[x]補(bǔ)
11.0100+[y]補(bǔ)
11.1000
10.1100
兩個(gè)符號(hào)位出現(xiàn)“10”,表示已溢出,即結(jié)果小于-1。下溢
[又例]
x=-0.0100,y=-0.1000,求x+y。溢出概念與檢測(cè)方法[解]
:[x]補(bǔ)=11.1100,
[y]補(bǔ)=11.1000
[x]補(bǔ)
11.1100+[y]補(bǔ)
11.1000
11.0100
兩個(gè)符號(hào)位出現(xiàn)“11”,表示無(wú)溢出。溢出概念與檢測(cè)方法由此可以得出如下結(jié)論:當(dāng)以模4補(bǔ)碼運(yùn)算,運(yùn)算結(jié)果的二符號(hào)位相異時(shí),表示溢出;相同時(shí),表示未溢出。故:溢出邏輯表達(dá)式為
V=Sf1⊕Sf2,其中Sf1和Sf2分別為最高符號(hào)位和第二符號(hào)位。此邏輯表達(dá)式可用異或門實(shí)現(xiàn)。2.模4補(bǔ)碼相加的結(jié)果,不論溢出與否,最高符號(hào)位始終指示正確的符號(hào)。
溢出概念與檢測(cè)方法
第二種溢出檢測(cè)方法:采用“單符號(hào)位法”。從例1和例2中看到:(1).當(dāng)最高有效位產(chǎn)生進(jìn)位而符號(hào)位無(wú)進(jìn)位時(shí),產(chǎn)生上溢;(2).當(dāng)最高有效位無(wú)進(jìn)位而符號(hào)位有進(jìn)位時(shí),產(chǎn)生下溢。
故:溢出邏輯表達(dá)式為:
V=Cf⊕Co其中:
Cf為符號(hào)位產(chǎn)生的進(jìn)位,Co為最高有效位產(chǎn)生的進(jìn)位。(顯然:此邏輯關(guān)系可用異或門方便地實(shí)現(xiàn))。
在定點(diǎn)機(jī)中,當(dāng)運(yùn)算結(jié)果發(fā)生溢出時(shí),機(jī)器通過(guò)邏輯電路自動(dòng)檢查出溢出故障,并進(jìn)行中斷處理。
二進(jìn)制加法/減法器2.2.4基本的二進(jìn)制加法/減法器
兩個(gè)二進(jìn)制數(shù)字Ai,Bi和一個(gè)進(jìn)位輸入Ci相加,產(chǎn)生一個(gè)和輸出Si,以及一個(gè)進(jìn)位輸出Ci+1。表2.2中列出一位全加器進(jìn)行加法運(yùn)算的輸入輸出真值表。根據(jù)表2.2所示的真值表,三個(gè)輸入端和兩個(gè)輸出端可按如下邏輯方程進(jìn)行聯(lián)系:
Si=Ai⊕Bi⊕Ci
Ci+1=AiBi+BiCi+CiAi1111110011101010100110110010100110000000Ci+1SiCiBiAi輸出輸入表2.2一位全加器真值表(2.23)二進(jìn)制加法/減法器按表達(dá)式(2.23)組成的一位全加器(FA)示意圖2.2(b)對(duì)一位全加器(FA)來(lái)說(shuō),Si的時(shí)間延遲為6T(每級(jí)異或門延遲3T),Ci+1的時(shí)間延遲為5T,其中T被定義為相應(yīng)于單級(jí)邏輯電路的單位門延遲。T通常采用一個(gè)“與非”門或一個(gè)“或非”門的時(shí)間延遲來(lái)作為度量單位。3T+3T3T+T+T二進(jìn)制加法/減法器
教材第35頁(yè)圖2.2(a)示出了補(bǔ)碼運(yùn)算的二進(jìn)制加法/減法器的邏輯結(jié)構(gòu)圖。由圖看到,n個(gè)1位的全加器(FA)可級(jí)聯(lián)成一個(gè)n位的行波進(jìn)位加減器。M為方式控制輸入線,當(dāng)M=0時(shí),作加法(A+B)運(yùn)算;當(dāng)M=1時(shí),作減法A-B運(yùn)算,在后一種情況下,[A]補(bǔ)+[B]補(bǔ)運(yùn)算轉(zhuǎn)化成[A]補(bǔ)+[-B]補(bǔ)運(yùn)算,求補(bǔ)過(guò)程由B+1來(lái)實(shí)現(xiàn)。因此,圖中最右邊的全加器的起始進(jìn)位輸入端被連接到功能方式線M上,作減法時(shí)M=1,相當(dāng)于在加法器的最低位上加1。另外,圖中左邊還表示出單符號(hào)位法的溢出檢測(cè)邏輯;當(dāng)Cn=Cn-1時(shí),運(yùn)算無(wú)溢出;而當(dāng)Cn≠Cn-1時(shí),運(yùn)算有溢出,經(jīng)異或門產(chǎn)生溢出信號(hào)。
電路示意圖二進(jìn)制加法/減法器二進(jìn)制加法/減法器現(xiàn)在我們計(jì)算一個(gè)n位的行波進(jìn)位加法器的時(shí)間延遲。(見(jiàn)書(shū)P35-36)假如采用圖2.2(a)所示的一位全加器并考慮溢出檢測(cè),那么n位行波進(jìn)位加法器的延遲時(shí)間ta為:ta=n·2T+9T=(2n+9)T(2.24)9T為最低位上的兩級(jí)“異或”門;再加上溢出“異或”門(3T),2T為每級(jí)進(jìn)位鏈的延遲時(shí)間。
當(dāng)不考慮溢出檢測(cè)時(shí),有
ta=(n-1)·2T+9T
(2.25)
ta意味著加法器的輸入端輸入加數(shù)和被加數(shù)后,在最壞情況下加法器輸出端得到穩(wěn)定的求和輸出所需的最長(zhǎng)時(shí)間。顯然這個(gè)時(shí)間越小越好。注意,加數(shù)、被加數(shù)、進(jìn)位與和數(shù)都是用電平來(lái)表示的,因此,所謂穩(wěn)定的求和輸出,就是指穩(wěn)定的電平輸出。(CAI演示)二進(jìn)制加法/減法器延遲時(shí)間ta為:2T延遲時(shí)間ta為:3T考慮溢出檢測(cè)時(shí),延遲時(shí)間ta為:ta=n·2T+9T=(2n+9)T當(dāng)不考慮溢出檢測(cè)時(shí),有:ta=(n-1)·2T+9T十進(jìn)制加法器2.2.5十進(jìn)制加法器
十進(jìn)制加法器可由BCD碼(二-十進(jìn)制碼)來(lái)設(shè)計(jì),它可以在二進(jìn)制加法器的基礎(chǔ)上加上適當(dāng)?shù)摹靶U边壿媮?lái)實(shí)現(xiàn),該校正邏輯可將二進(jìn)制的“和”改變成所要求的十進(jìn)制格式。
n位BCD碼行波式進(jìn)位加法器的一般結(jié)構(gòu)如圖2.3(a)所示,它由n級(jí)組成,每一級(jí)將一對(duì)4位的BCD數(shù)字相加,并通過(guò)一位進(jìn)位線與其相鄰級(jí)連接。而每一位十進(jìn)制數(shù)字的BCD加法器單元的邏輯結(jié)構(gòu)示于圖2.3(b)。(見(jiàn)書(shū)P36)
四位二進(jìn)制數(shù)表示十進(jìn)制數(shù)的一位(0-9),即數(shù)據(jù)范圍:0000-1001十進(jìn)制加法器例:設(shè)Xi=0110=(6)10 Yi=0111=(7)10
則:Si’=Xi+Yi=0110+0111=1101=(13)10
十位數(shù):1個(gè)位數(shù):3
對(duì)Si’進(jìn)行“加6校正”后:
Si=Si’+6=1101+0110=10011 1 3Si’>9的情況:Si’= 1010, 1011, 1100, 1101, 1110, 1111.
當(dāng)Si’>9時(shí),要求:
(1).產(chǎn)生向高位的進(jìn)位信號(hào)Ci+1;(2).對(duì)Si’進(jìn)行“+6”校正,得出本位的十進(jìn)制數(shù)值。實(shí)現(xiàn):(6)10+(7)10
進(jìn)位十進(jìn)制加法器該位的和十進(jìn)制加法的校正十進(jìn)制加法器
在十進(jìn)制運(yùn)算時(shí),當(dāng)相加二數(shù)之和大于9時(shí),便產(chǎn)生進(jìn)位??墒怯肂CD碼完成十進(jìn)制數(shù)運(yùn)算時(shí),當(dāng)和數(shù)大于9時(shí),必須對(duì)和數(shù)進(jìn)行加6修正。這是因?yàn)?采用BCD碼后,在二數(shù)相加的和數(shù)小于等于9時(shí),十進(jìn)制運(yùn)算的結(jié)果是正確的;而當(dāng)相加的和數(shù)大于9時(shí),結(jié)果不正確,必須加6修正后才能得出正確的結(jié)果。因此,當(dāng)?shù)谝淮谓魄笾禃r(shí),可將它看成每一級(jí)是一個(gè)4位二進(jìn)制加法器來(lái)執(zhí)行,就好像xi和yi是普通4位二進(jìn)制數(shù)一樣。設(shè)S‘i代表這樣得到的4位二進(jìn)制數(shù)和,C’i+1為輸出進(jìn)位,而Si代表正確的BCD和,Ci+1代表正確的進(jìn)位,那么:
當(dāng)xi+yi+Ci<10時(shí),Si=S‘I(無(wú)須校正)
當(dāng)Xi+Yi+Ci≥10時(shí),
Si=S‘i+6(需要”+6”校正)顯然,對(duì)于十進(jìn)制加法來(lái)說(shuō),當(dāng)C'i+1=1或S'i≥10時(shí),應(yīng)當(dāng)有:輸出進(jìn)位Ci+1=1。因此,可利用Ci+1的狀態(tài)來(lái)產(chǎn)生所要求的校正因子:
Ci+1=1時(shí)校正因子為6;Ci+1=0時(shí)校正因子為0。在圖2.3(b)中,4位行波式進(jìn)位的二進(jìn)制加法器計(jì)算出和S'i,然后S'i經(jīng)過(guò)第二級(jí)二進(jìn)制加法器加上0或6,進(jìn)而產(chǎn)生最終十進(jìn)制結(jié)果Si。十進(jìn)制加法器和大于9?和有進(jìn)位校正:Ci+1=0時(shí):+0;
Ci+1=1時(shí):+6;2.3定點(diǎn)乘法運(yùn)算
2.3.1原碼并行乘法2.3.2補(bǔ)碼并行乘法定點(diǎn)乘法運(yùn)算2.3.1原碼乘法1.人工算法與機(jī)器算法的同異性在定點(diǎn)計(jì)算機(jī)中,兩個(gè)原碼表示的數(shù)相乘的運(yùn)算規(guī)則是:乘積的符號(hào)位由兩數(shù)的符號(hào)位按異或運(yùn)算得到,而乘積的數(shù)值部分則是兩個(gè)正數(shù)相乘之積。
設(shè)n位被乘數(shù)和乘數(shù)用定點(diǎn)小數(shù)表示(定點(diǎn)整數(shù)也同樣適用)
被乘數(shù)
[x]原=xf.xn-1…x1x0
乘數(shù)
[y]原=yf.yn-1…y1y0
則乘積:
[z]原=(xf⊕yf)+(0.xn-1…x1x0)(0.yn-1…y1y0)(2.26)
式中,xf為被乘數(shù)符號(hào),yf為乘數(shù)符號(hào)。
原碼乘法運(yùn)算乘積符號(hào)的運(yùn)算法則是:同號(hào)相乘為正,異號(hào)相乘為負(fù)。由于被乘數(shù)和乘數(shù)的符號(hào)組合只有四種情況(xfyf=00,01,10,11),因此積的符號(hào)可按“異或”(按位加)運(yùn)算得到。數(shù)值部分的運(yùn)算方法與普通的十進(jìn)制小數(shù)乘法類似,不過(guò)對(duì)于用二進(jìn)制表達(dá)式的數(shù)來(lái)說(shuō),其乘法規(guī)則更為簡(jiǎn)單一些。設(shè)x=0.1101,y=0.1011.讓我們先用習(xí)慣方法求其乘積,觀察其過(guò)程:原碼乘法運(yùn)算0.1101(x)X0.1011(y)
110111010000+11010.10001111(z)
運(yùn)算的過(guò)程與十進(jìn)制乘法相似:
從乘數(shù)y的最低位開(kāi)始,若這一位為“1”,則將被乘數(shù)x寫(xiě)下;若這一位為“0”,則寫(xiě)下全0。然后再逐次完成對(duì)乘數(shù)y各高位的乘法運(yùn)算,其規(guī)則同上。不過(guò)高一位乘數(shù)的權(quán)比低一位乘數(shù)的權(quán)大一級(jí)(21=2),因此被乘數(shù)x要左移一位。以此類推,直到乘數(shù)各位全部乘完為止,最后將它們統(tǒng)統(tǒng)加起來(lái),變得到最后乘積z。如果被乘數(shù)和乘數(shù)用定點(diǎn)整數(shù)表示,運(yùn)算過(guò)程也完全一樣。原碼乘法運(yùn)算
然而,人們習(xí)慣的算法對(duì)機(jī)器并不完全適用。原因之一:機(jī)器通常只有n位長(zhǎng),兩個(gè)n位數(shù)相乘,乘積可能為2n位。原因之二:只有兩個(gè)操作數(shù)相加的加法器難以勝任將n個(gè)位積一次相加起來(lái)的運(yùn)算。早期計(jì)算機(jī)中為了簡(jiǎn)化硬件結(jié)構(gòu),采用串行的1位乘法方案,即多次執(zhí)行“加法—移位”操作來(lái)實(shí)現(xiàn)。這種方法并不需要很多器件。然而串行方法畢竟太慢。隨著大規(guī)模集成電路問(wèn)世以來(lái),出現(xiàn)了各種形式的流水式陣列乘法器,它們屬于并行乘法器。原碼乘法運(yùn)算2.不帶符號(hào)的陣列乘法器設(shè)有兩個(gè)不帶符號(hào)的二進(jìn)制整數(shù):(見(jiàn)書(shū)P38)A=am-1…a1a0
(m位)
B=bn-1…b1b0
(n位)
它們的數(shù)值分別為a和b,即
m-1
n-1
a
=∑ai2i
b
=∑bj2j
i=0
j=0在二進(jìn)制乘法中,被乘數(shù)A與乘數(shù)B相乘,產(chǎn)生(m+n)位乘積P:P=pm+n-1…p1p0
(m+n位)乘積P
的數(shù)值為:原碼乘法運(yùn)算
實(shí)現(xiàn)上述乘法過(guò)程所需要的操作和人們的習(xí)慣方法非常類似:
am-1am-2…
a1a0×)bn-1…
b1b0am-1b0am-2b0…a1b0a0b0
am-1b1am-2b1…
a0b1+)am-1bn-1am-2bn-1…a0bn-1pm+n-1pm+n-2pm+n-3pn-1…p1p0原碼乘法運(yùn)算
乘積P乘數(shù)B被乘數(shù)A
上述過(guò)程給出了在m位乘n位不帶符號(hào)整數(shù)的陣列乘法中,“加法—移位”操作的被加數(shù)矩陣。每一個(gè)部分乘積項(xiàng)(位積)aibj叫做一個(gè)被加數(shù)。這m×n個(gè)被加數(shù){aibj|0≤i≤m-1和0≤j≤n-1}可以用m×n個(gè)“與”門并行地產(chǎn)生。顯然,設(shè)計(jì)高速并行乘法器的基本問(wèn)題,就在于縮短被加數(shù)矩陣中每列所需的加法時(shí)間。
5位×5位陣列乘法器的邏輯電路圖演示
原碼乘法運(yùn)算
若乘法器為n位×n位時(shí),需要n(n-1)個(gè)“全加器”和n2個(gè)“與”門。由“與門”形成該值加法器
原碼乘法運(yùn)算
3T+3T2T3T+2T(n-2).6T(3T+Tf)(n-2).Tf3TTa
令Ta為“與門”的傳輸延遲時(shí)間,Tf為全加器(FA)的進(jìn)位傳輸延遲時(shí)間,假定用2級(jí)“與非”邏輯來(lái)實(shí)現(xiàn)FA的進(jìn)位鏈功能和“與門”邏輯,那么就有:
Ta
=
Tf
=2T
由上面的分析可以得出:最壞情況下的延遲途徑,既是沿著矩陣p4垂直線和最下面的一行。因而得:
n位×n位不帶符號(hào)的陣列乘法器總的乘法時(shí)間為:
tm=Ta+(n-1)×6T+(n-1)×Tf
=2T+(n-1)×6T+(n-1)×2T
=(8n-6)T
(2.27)原碼乘法運(yùn)算[例16]參見(jiàn)上CAI演示,已知兩個(gè)不帶符號(hào)的二進(jìn)制整數(shù)
A
=11011,B
=10101,求每一部分乘積項(xiàng)aibj的值與p9p8……p0的值。
[解]:
11011=A(2710)
10101=B(2110)
11011000001101100000+110111000110111=P(56710)a4b0=1a3b0=1a2b0=0a1b0=1a0b0=1a4b1=0a3b1=0a2b1=0a1b1=0a0b1=0a4b2=1a3b2=1a
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度房地產(chǎn)工程智能化安裝勞務(wù)施工承包合同2篇
- 流行性感冒患者的護(hù)理
- 智研咨詢發(fā)布-2025年中國(guó)新能源汽車維護(hù)行業(yè)現(xiàn)狀、發(fā)展環(huán)境及投資前景分析報(bào)告
- 用戶體驗(yàn)在網(wǎng)絡(luò)游戲開(kāi)發(fā)中的重要性
- 現(xiàn)代企業(yè)教育模式與人才培養(yǎng)策略
- 電力工程施工的工藝流程與質(zhì)量控制
- 新生兒感染性疾病的護(hù)理常規(guī)
- 2025年深圳年貨運(yùn)從業(yè)資格證
- 2025年鄧州市貨運(yùn)從業(yè)資格證
- 構(gòu)建網(wǎng)絡(luò)安全與危機(jī)預(yù)警雙重保障體系研究報(bào)告
- 施工周報(bào)表(標(biāo)準(zhǔn)模版)
- 4.5MWp分布式光伏項(xiàng)目主要設(shè)備材料清單(建筑工程安裝工程)
- von frey絲K值表完整版
- 云南省普通初中學(xué)生成長(zhǎng)記錄模板-好ok
- SB/T 10415-2007雞粉調(diào)味料
- 考古繪圖基礎(chǔ)
- GB/T 32574-2016抽水蓄能電站檢修導(dǎo)則
- 《社會(huì)主義市場(chǎng)經(jīng)濟(jì)理論(第三版)》第十三章社會(huì)主義市場(chǎng)經(jīng)濟(jì)標(biāo)準(zhǔn)論
- 變更索賠案例分析
- 過(guò)敏性休克的急救及處理流程教材課件(28張)
- 《花婆婆》兒童繪本故事
評(píng)論
0/150
提交評(píng)論