《計算機(jī)系統(tǒng)平臺》課件-第3章 計算機(jī)容易存儲與處理的數(shù)據(jù)形式_第1頁
《計算機(jī)系統(tǒng)平臺》課件-第3章 計算機(jī)容易存儲與處理的數(shù)據(jù)形式_第2頁
《計算機(jī)系統(tǒng)平臺》課件-第3章 計算機(jī)容易存儲與處理的數(shù)據(jù)形式_第3頁
《計算機(jī)系統(tǒng)平臺》課件-第3章 計算機(jī)容易存儲與處理的數(shù)據(jù)形式_第4頁
《計算機(jī)系統(tǒng)平臺》課件-第3章 計算機(jī)容易存儲與處理的數(shù)據(jù)形式_第5頁
已閱讀5頁,還剩88頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

補(bǔ)碼數(shù)值數(shù)據(jù)的表示數(shù)值數(shù)據(jù)表示的三要素進(jìn)位計數(shù)制定、浮點(diǎn)表示如何用二進(jìn)制編碼即:要確定一個數(shù)值數(shù)據(jù)的值必須先確定這三個要素。例如,機(jī)器數(shù)01011001的值是多少?進(jìn)位計數(shù)制十進(jìn)制、二進(jìn)制、十六進(jìn)制、八進(jìn)制數(shù)及其相互轉(zhuǎn)換定/浮點(diǎn)表示(解決小數(shù)點(diǎn)問題)定點(diǎn)整數(shù)、定點(diǎn)小數(shù)浮點(diǎn)數(shù)(可用一個定點(diǎn)小數(shù)和一個定點(diǎn)整數(shù)來表示)定點(diǎn)數(shù)的編碼(解決正負(fù)號問題)原碼、補(bǔ)碼、反碼、移碼(反碼很少用)答案是:不知道!進(jìn)位計數(shù)制1.R進(jìn)制轉(zhuǎn)換成十進(jìn)制數(shù)2.十進(jìn)制數(shù)轉(zhuǎn)換成R進(jìn)制3.二、八、十六進(jìn)制數(shù)的相互轉(zhuǎn)換定點(diǎn)和浮點(diǎn)的出現(xiàn)是為了解決小數(shù)點(diǎn)的問題。定點(diǎn)數(shù):小數(shù)點(diǎn)固定的數(shù),用來對定點(diǎn)小數(shù)和定點(diǎn)整數(shù)進(jìn)行表示。定點(diǎn)整數(shù):固定在機(jī)器數(shù)的最低位之后定點(diǎn)小數(shù):固定在符號位之后定點(diǎn)與浮點(diǎn)表示2.浮點(diǎn)格式1)浮點(diǎn)數(shù)的表示方法浮點(diǎn)表示法就是一個數(shù)的小數(shù)點(diǎn)的位置不固定,可以浮動。例如0.0000000000000101可表示成1.01×2–14任意進(jìn)制數(shù)101000000000000可表示成1.01×214N可以寫成N=M×RE, R=2任意一個浮點(diǎn)數(shù)可用兩個定點(diǎn)數(shù)來表示。符號位階碼E(定點(diǎn)整數(shù))尾數(shù)M(定點(diǎn)小數(shù))浮點(diǎn)數(shù)的范圍浮點(diǎn)數(shù)與定點(diǎn)數(shù)的關(guān)系由浮點(diǎn)數(shù)的范圍可知,浮點(diǎn)數(shù)X的絕對值:浮點(diǎn)數(shù)的最小數(shù)是定點(diǎn)小數(shù)的最小數(shù)2-n除以一個很大的數(shù)2(2m-1)

,最大數(shù)則是定點(diǎn)小數(shù)的最大數(shù)(1-2-n)乘以這個大數(shù)2(2m-1)

。因此浮點(diǎn)數(shù)的表示范圍比定點(diǎn)數(shù)要大得多。定點(diǎn)數(shù)的編碼表示將數(shù)的正/負(fù)號用0/1來表示稱為符號數(shù)字化。為了解決數(shù)字化后的符號是否能一起參加運(yùn)算,就出現(xiàn)了各種編碼方法。編碼方法主要有原碼、反碼、補(bǔ)碼和移碼。由于任意一個浮點(diǎn)數(shù)都可以用定點(diǎn)整數(shù)和定點(diǎn)小數(shù)來表示,因此只考慮定點(diǎn)數(shù)的編碼方法。把帶有“+”、“-”號的數(shù)據(jù)表示形式稱為真值。把符號數(shù)值化的數(shù)據(jù)表示形式稱為機(jī)器數(shù);表示機(jī)器數(shù)的常用的方法有三種,即原碼、反碼和補(bǔ)碼。這三種機(jī)器數(shù)的表示形式中,符號部分的規(guī)定是相同的,所不同的是數(shù)值部分的表示形式。二、數(shù)的機(jī)器碼表示1.原碼表示符號用代碼0表示“+”,用代碼1表示“-”,數(shù)值部分以真值形式表示。 例:x1=+1101x2=-1101 則:[x1]原=01101[x2]原=111012.原碼性質(zhì):若x=+x1x2…xn-1

,則[x]原=0x1x2…xn-1;若x=-x1x2…xn-1

,則[x]原=1x1x2…xn-1。原碼零有兩種表示形式,當(dāng)x=±00…0時[+00…0]原=000…0[-00…0]原=100…0

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

原碼優(yōu)缺點(diǎn)優(yōu)點(diǎn):簡單直觀,容易變換缺點(diǎn):進(jìn)行加、減運(yùn)算較為復(fù)雜。首先要比較兩個數(shù)的符號,符號相同,則數(shù)值相加;符號不同,則比較兩數(shù)數(shù)值大小,由數(shù)值大的數(shù)減去數(shù)值小的數(shù),符號與數(shù)值大的數(shù)相同。符號位用0表示正數(shù),用1表示負(fù)數(shù)。對于正數(shù),反碼的數(shù)值與原碼相同;對于負(fù)數(shù),反碼數(shù)值是將原碼數(shù)值按位取反

例:x1=+1011x2=-1011 則:[x1]反=01011[x2]反=10100反碼性質(zhì):若x=+x1x2…xn-1

,則[x]原=0x1x2…xn-1;若x=-x1x2…xn-1

,則[x]原=1x1x2…xn-1。原碼零有兩種表示形式,當(dāng)x=±00…0時[+00…0]反=000…0[-00…0]反=111…1

反碼表示

反碼性質(zhì):用反碼進(jìn)行運(yùn)算時,兩數(shù)反碼的和等于兩數(shù)和的反碼;符號位也參加運(yùn)算,當(dāng)符號位產(chǎn)生進(jìn)位時,需要循環(huán)進(jìn)位反碼表示

例已知x1=+1001,x2=-0101,求x1+x2[解][x1]反=01001

+)[x2]反=11010

[x1]反+[x2]反=100011+)1

00100即:[x1+x2]反=00100,所以x1+x2=+0100反碼優(yōu)缺點(diǎn)優(yōu)點(diǎn):進(jìn)行加法運(yùn)算時比原碼表示法簡單;缺點(diǎn):當(dāng)有符號位進(jìn)位時,存在循環(huán)進(jìn)位的問題,即多執(zhí)行一次加法。符號部分同原碼,數(shù)值部分與它的符號位有關(guān):對于正數(shù),補(bǔ)碼的數(shù)值位與原碼相同;對于負(fù)數(shù),補(bǔ)碼的數(shù)值位是將原碼按位變反,再在最低位加1。 例:x1=+11010x2=-11010 則:[x1]補(bǔ)=011010[x2]補(bǔ)=100110補(bǔ)碼性質(zhì):若x=+x1x2…xn-1

,則[x]補(bǔ)=0x1x2…xn-1;若x=-x1x2…xn-1

,則[x]補(bǔ)=1x1x2…xn-1+1。補(bǔ)碼零有一種表示形式,當(dāng)x=±00…0時[+00…0]補(bǔ)=000…0[-00…0]補(bǔ)=000…0(mod2n)3.補(bǔ)碼表示

兩數(shù)相加,不論兩數(shù)的真值是正數(shù)還是負(fù)數(shù),只要先把它們表示成相應(yīng)的補(bǔ)碼形式,然后按二進(jìn)制規(guī)則相加(符號位也參加運(yùn)算),其結(jié)果即為兩數(shù)和的補(bǔ)碼。 例3.3已知x1=+1110,x2=-0111,求x1+x2 [解] [x1]補(bǔ)=01110

+)[x2]補(bǔ)=11001

[x1]補(bǔ)+[x2]補(bǔ)=[1]00111

丟棄即[x1+x2]補(bǔ)=00111,所以x1+x2=00111補(bǔ)碼表示補(bǔ)碼優(yōu)點(diǎn):可以簡化加法運(yùn)算,只需一套實(shí)現(xiàn)加法運(yùn)算的線路移碼(又叫增碼)是符號位取反的補(bǔ)碼,一般用做浮點(diǎn)數(shù)的階碼。例:X=+1011X=-1011[X]移=11011[X]移=00101移碼表示各種數(shù)的編碼有三種定點(diǎn)編碼方式原碼

現(xiàn)用來表示浮點(diǎn)(實(shí))數(shù)的尾數(shù)反碼現(xiàn)已不用于表示數(shù)值數(shù)據(jù)補(bǔ)碼

50年代以來,所有計算機(jī)都用補(bǔ)碼來表示定點(diǎn)整數(shù)中帶符號整數(shù)移碼用來表示浮點(diǎn)數(shù)的“階碼”為什么用補(bǔ)碼表示帶符號整數(shù)?補(bǔ)碼運(yùn)算系統(tǒng)是模運(yùn)算系統(tǒng),加、減運(yùn)算統(tǒng)一數(shù)0的表示唯一,方便使用比原碼和反碼多表示一個最小負(fù)數(shù)4.原碼、反碼和補(bǔ)碼之間的轉(zhuǎn)換例:

x1

=+1101

[x1]原=01101x2

=-1101

[x2]補(bǔ)=10011x

=(-13/64)10=(-0.001101)2

[x]原=1.001101,[x]補(bǔ)=1.110011[x]補(bǔ)=11011

[x]原=10101

原碼、反碼和補(bǔ)碼之間的轉(zhuǎn)換C語言中數(shù)的表示定點(diǎn)整數(shù)表示無符號整數(shù)有符號整數(shù)Unsignedinteger(無符號整數(shù))一般在全部是正數(shù)運(yùn)算且不出現(xiàn)負(fù)值結(jié)果的場合下,可使用無符號數(shù)表示。例如,地址運(yùn)算,編號表示,等等無符號整數(shù)的編碼中沒有符號位沒有原碼、反碼、補(bǔ)碼之分。能表示的最大值大于位數(shù)相同的帶符號整數(shù)的最大值(Why?)例如,8位無符號整數(shù)最大是255(11111111)而8位帶符號整數(shù)最大為127(01111111)總是整數(shù),所以很多時候就簡稱為“無符號數(shù)”C語言中對應(yīng)unsignedshort,unsignedint,unsignedlong有符號整數(shù)帶符號整數(shù)也被稱為有符號整數(shù),它必須用一個二進(jìn)制位來表示符號?,F(xiàn)代計算機(jī)中都是有補(bǔ)碼來表示有符號整數(shù)。n位帶符號整數(shù)的表示范圍為-2n-1~(2n-1-1)。例如:8位帶符號數(shù)的表示范圍為:

-128~+127

10000000~01111111C語言中對應(yīng)short,int,long浮點(diǎn)數(shù)的表示由于用定點(diǎn)數(shù)無法表示大量帶有小數(shù)點(diǎn)的實(shí)數(shù),因此計算機(jī)機(jī)中專門用浮點(diǎn)數(shù)來表示實(shí)數(shù)。C語言中float型(32位)其中尾數(shù)用原碼表示,階碼用移碼表示。(n位移碼范圍:

-2n-1~(2n-1-1))。規(guī)格化尾數(shù)第一位總為1,因此在尾數(shù)中缺省第一位的1.使得23位尾數(shù)表示了24位數(shù)字。8位23位1位例:畫出下述32位浮點(diǎn)數(shù)格式的表數(shù)范圍。018931

第0位數(shù)符S;第1~8位為8位移碼表示階碼E;第9~31位為24位二進(jìn)制原碼小數(shù)表示的尾數(shù)M。規(guī)格化尾數(shù)的第一位總是1,故規(guī)定第一位默認(rèn)的“1”不明顯表示出來。這樣可用23個數(shù)位表示24位尾數(shù)。S階碼E尾數(shù)MC語言中double型(64位)其中尾數(shù)用原碼表示,階碼用移碼表示。規(guī)格化尾數(shù)第一位總為1,因此在尾數(shù)中缺省第一位的1.使得52位尾數(shù)表示了53位數(shù)字。11位1位52位數(shù)值數(shù)據(jù)(numericaldata)的兩種表示Decimal(十進(jìn)制數(shù))

用ASCII碼表示用BCD(BinarycodedDecimal)碼表示計算機(jī)中為什么要用十進(jìn)制數(shù)表示數(shù)值?日常使用的都是十進(jìn)制數(shù),所以,計算機(jī)外部都使用十進(jìn)制數(shù)。在一些有大量數(shù)據(jù)輸入/出的系統(tǒng)中,為減少二進(jìn)制數(shù)和十進(jìn)制數(shù)之間的轉(zhuǎn)換,在計算機(jī)內(nèi)部直接用十進(jìn)制數(shù)表示數(shù)值。

十進(jìn)制數(shù)的表示數(shù)據(jù)的存儲與排列順序比特(bit)是計算機(jī)中處理、存儲、傳輸信息的最小單位二進(jìn)制信息的計量單位是“字節(jié)”(Byte),也稱“位組”現(xiàn)代計算機(jī)中,(內(nèi)存)存儲器按字節(jié)編址字節(jié)是最小可尋址單位(addressableunit)

如果以字節(jié)為一個排列單位,則LSB表示最低有效字節(jié),MSB表示最高有效字節(jié)除比特和字節(jié)外,還經(jīng)常使用“字”(word)作為單位“字”和“字長”的概念不同IA-32中的“字”有多少位?字長多少位呢?DWORD:32位QWORD:64位16位32位程序中數(shù)據(jù)類型的寬度高級語言支持多種類型、多種長度的數(shù)據(jù)例如,C語言中char類型的寬度為1個字節(jié),可表示一個字符(非數(shù)值數(shù)據(jù)),也可表示一個8位的整數(shù)(數(shù)值數(shù)據(jù))

C聲明典型32位機(jī)器CompaqAlpha機(jī)器charshortintlong12441248char*48floatdouble4848C語言中數(shù)值數(shù)據(jù)類型的寬度(單位:字節(jié))從表中看出:同類型數(shù)據(jù)并不是所有機(jī)器都采用相同的寬度,分配的字節(jié)數(shù)隨機(jī)器字長和編譯器的不同而不同。

CompaqAlpha是一個針對高端應(yīng)用的64位機(jī)器,即字長為64位數(shù)據(jù)的存儲和排列順序80年代開始,幾乎所有機(jī)器都用字節(jié)編址ISA設(shè)計時要考慮的兩個問題:如何根據(jù)一個字節(jié)地址取到一個32位的字?字的存放問題一個字能否存放在任何字節(jié)邊界?字的邊界對齊問題例如,若inti=-65535,存放在內(nèi)存100號單元(即占100#~103#),則用“取數(shù)”指令訪問100號單元取出i時,必須清楚i的4個字節(jié)是如何存放的。103102101100小端方式100101102103大端方式Word:FFFF0001大端方式:最高有效字節(jié)存放在低地址單元中.例.IBM360/370,Motorola68k,MIPS,Sparc,HPPA小端方式:最高有效字節(jié)存放在高地址單元中.

例.Intel80x86,DECVAX

字的存放問題65535(D)=1111111111111111(B)[-65535]補(bǔ)=FFFF0001H邊界對齊目前機(jī)器字長一般為32位或64位,而存儲器地址按字節(jié)編址各種不同長度的數(shù)據(jù)存放時,有兩種處理方式:

按邊界對齊(假定存儲字的寬度為32位,按字節(jié)編址)不按邊界對齊壞處:可能會增加訪存次數(shù)?。▽W(xué)了存儲器組織后會更明白?。R:要求數(shù)據(jù)的地址是相應(yīng)的邊界地址每4個字節(jié)可同時讀寫按邊界對齊

邊界不對齊00040812160字節(jié)1字節(jié)2字節(jié)3字節(jié)0004081216字節(jié)0字節(jié)1字節(jié)2字節(jié)3對齊

如:inti,shortk,doublex,charc,shortj,……

則:&i=0;&k=4;&x=8;&c=16;&j=18;……

則:&i=0;&k=4;&x=6;&c=14;&j=15;……x:3個周期j:2個周期x:2個周期j:1個周期不對齊:可以在任何地址存放。雖節(jié)省了空間,但增加了訪存次數(shù)!需要權(quán)衡,目前來看,浪費(fèi)一點(diǎn)存儲空間沒有關(guān)系!假設(shè)機(jī)器字長為32位,即每4個字節(jié)可同時讀寫。對齊:對于char型數(shù)據(jù),其自身對齊值為1,對于short型為2,對于int,float,double類型,其自身對齊值為4,單位字節(jié)。即起始地址能夠被1、2、4整除。對齊思考例如,在32位機(jī)器上,考慮下列兩個結(jié)構(gòu)聲明:structA{inta;

charb;

shortc;};structB{

charb;

inta;

shortc;};在要求對齊的情況下,哪種結(jié)構(gòu)聲明更好?sizeof(strcutA)值為8

sizeof(structB)的值卻是12,所以A的聲明更好。說明:結(jié)構(gòu)體的成員變量要對齊排放,結(jié)構(gòu)體本身也要根據(jù)自身的有效對齊值圓整(就是結(jié)構(gòu)體成員變量占用總長度需要是對結(jié)構(gòu)體有效對齊值的整數(shù)倍。數(shù)據(jù)的運(yùn)算按位運(yùn)算邏輯運(yùn)算移位運(yùn)算無符號和帶符號整數(shù)的加減運(yùn)算無符號和帶符號整數(shù)的乘除運(yùn)算浮點(diǎn)數(shù)的加減乘除運(yùn)算從高級語言程序中的表達(dá)式出發(fā),用機(jī)器數(shù)在具體電路中的執(zhí)行過程,來解釋表達(dá)式的執(zhí)行結(jié)果圍繞C語言中的運(yùn)算,解釋其在底層機(jī)器級的實(shí)現(xiàn)方法C語言程序中涉及的運(yùn)算按位運(yùn)算用途對位串實(shí)現(xiàn)“掩碼”(mask)操作或相應(yīng)的其他處理(主要用于對多媒體數(shù)據(jù)或狀態(tài)/控制信息進(jìn)行處理)操作按位或:“|”按位與:“&”按位取反:“~”按位異或:“^”問題:如何從16位采樣數(shù)據(jù)y中提取高位字節(jié),并使低字節(jié)為0?可用“&”實(shí)現(xiàn)“掩碼”操作:y&0xFF00例如,當(dāng)y=0x2C0B時,得到結(jié)果為:0x2C00C語言程序中涉及的運(yùn)算邏輯運(yùn)算用途用于關(guān)系表達(dá)式的運(yùn)算例如,if(x>yandi<100)then……中的“and”運(yùn)算操作“‖”表示“OR”運(yùn)算“&&”表示“AND”運(yùn)算

例如,if((x>y)&&(i<100))then……“!”表示“NOT”運(yùn)算與按位運(yùn)算的差別符號表示不同:&~&&;|~‖;……運(yùn)算過程不同:按位~整體結(jié)果類型不同:位串~邏輯值C語言程序中涉及的運(yùn)算移位運(yùn)算用途提取部分信息擴(kuò)大或縮小數(shù)值的2、4、8…倍操作左移::x<<k;右移:x>>k不區(qū)分是邏輯移位還是算術(shù)移位,由x的類型確定無符號數(shù):邏輯左移、邏輯右移帶符號整數(shù):算術(shù)左移、算術(shù)右移針對無符號數(shù)采用的是邏輯移位左移一位,數(shù)值擴(kuò)大一倍,右移一位,數(shù)值縮小一半。按方向分邏輯左移和邏輯右移寄存器末端觸發(fā)器補(bǔ)入0移位運(yùn)算——邏輯移位(無符號數(shù))寄存器帶符號數(shù)的移位算術(shù)運(yùn)算數(shù)的移位操作會引起數(shù)值變化右移一位,相當(dāng)于帶符號的數(shù)除以2(乘以1/2)左移一位,相當(dāng)于帶符號的數(shù)乘以2右移時,數(shù)的符號位不變左移時,末端補(bǔ)入0算術(shù)移位(有符號數(shù))例:某字長為8的機(jī)器中,x、y和z都是8位帶符號整數(shù),已知x=-80,則y=x/2=?z=2x=?移位!y=-40?z=-160?算術(shù)運(yùn)算(最基本的運(yùn)算)無符號數(shù)、帶符號整數(shù)+、-、*、/運(yùn)算等浮點(diǎn)數(shù)的+、-、*、/運(yùn)算等C語言程序中涉及的運(yùn)算定點(diǎn)運(yùn)算包括定點(diǎn)整數(shù)和定點(diǎn)小數(shù)定點(diǎn)加(減)法運(yùn)算帶符號數(shù)加減運(yùn)算(補(bǔ)碼加減運(yùn)算,以整數(shù)為例,小數(shù)相似)無符號數(shù)加減運(yùn)算帶符號數(shù)加減與無符號數(shù)加減運(yùn)算都采用同一套電路。1314指一個計量器的容量。對于計算機(jī)中的二進(jìn)制計數(shù)器,當(dāng)位數(shù)為2位時,它最多能計22=4個數(shù)(00~11),則該計數(shù)器的模M=22;當(dāng)二進(jìn)制計數(shù)器位數(shù)為n位時,則其模M=2n。模的概念

例:設(shè)計算機(jī)字長為4位,它所能表示的二進(jìn)制數(shù)為0000~1111,即其模為16。計算1001+1000,其結(jié)果將為0001,而不是10001:模的概念舉例

10019

10008

1000117=1(mod16)丟棄溢出補(bǔ)碼的加減運(yùn)算用補(bǔ)碼進(jìn)行運(yùn)算時,兩數(shù)補(bǔ)碼的和等于兩數(shù)和的補(bǔ)碼,即:

[x1+x2]補(bǔ)=[x1]補(bǔ)+[x2]補(bǔ)(mod2n)兩數(shù)補(bǔ)碼的差等于兩數(shù)差的補(bǔ)碼,即[x1-x2]補(bǔ)=[x1]補(bǔ)+[-x2]補(bǔ)(mod2n)[-x]補(bǔ)等于[x]補(bǔ)的各位(連符號位)取反加1。該過程稱之為求補(bǔ),即:

[-x]補(bǔ)=[(x)補(bǔ)]求補(bǔ)補(bǔ)碼加法兩數(shù)的符號位參加運(yùn)算[A+B]補(bǔ)=[A]補(bǔ)+[B]補(bǔ)(mod2n)模2n意義下,兩數(shù)做補(bǔ)碼加法運(yùn)算時,可直接將補(bǔ)碼表示的兩操作數(shù)相加,無須考慮它們的數(shù)符是正或負(fù),所得結(jié)果即為補(bǔ)碼表示的和。即:任意兩數(shù)的補(bǔ)碼之和等于該兩數(shù)之和的補(bǔ)碼。2)補(bǔ)碼加(減)法補(bǔ)碼減法兩數(shù)的符號位參加運(yùn)算[A-B]補(bǔ)=[A]補(bǔ)+[-B]補(bǔ)(mod2n)補(bǔ)碼減法可變成補(bǔ)碼加法運(yùn)算,減去減數(shù)B可轉(zhuǎn)換加減數(shù)的機(jī)器負(fù)數(shù)[-B]補(bǔ)。即:模2n意義下,兩數(shù)差的補(bǔ)碼等于被減數(shù)的補(bǔ)碼加上減數(shù)的機(jī)器負(fù)數(shù)。2)補(bǔ)碼加(減)法例3-8:A=+1001,B=+0101,求[A+B]補(bǔ)解:[A]補(bǔ)=01001,[B]補(bǔ)=00101例3-9:

A=+1011,B=-0101,求[A+B]補(bǔ)解:[A]補(bǔ)=01011,[B]補(bǔ)=110110100101011

01110

100110[A+B]補(bǔ)=00110+00101+11011[A+B]補(bǔ)=011102)補(bǔ)碼加(減)法例3-10:A=+1101,B=+0110,求[A-B]補(bǔ)解:[A]補(bǔ)=01101,[-B]補(bǔ)=1101001101

100111[A-B]補(bǔ)=00111+110102)補(bǔ)碼加(減)法1101

0111A-B=+0111-0110溢出概念與檢測方法檢測方法:符號位采用兩位,即用變形補(bǔ)碼表示。也稱“模4補(bǔ)碼”符號位作為數(shù)的一部分一起參與運(yùn)算,運(yùn)算結(jié)果以補(bǔ)碼表示若兩符號位相同,結(jié)果正常若符號位為01,表示正溢出若符號位為10,表示負(fù)溢出2)補(bǔ)碼加(減)法例:

A=-1101,B=-1010,求[A+B]補(bǔ)解:[A]補(bǔ)=110011,[B]補(bǔ)=110110例:

A=+1101,B=-1010,求[A-B]補(bǔ)解:[A]補(bǔ)=001101,[-B]補(bǔ)=001010結(jié)果為正溢出110011001101101001010111+110110+001010結(jié)果為負(fù)溢出2)補(bǔ)碼加(減)法整數(shù)加減運(yùn)算及其部件補(bǔ)碼加減運(yùn)算公式[A+B]補(bǔ)

=[A]補(bǔ)

+[B]補(bǔ)

(MOD2n)[A–B]補(bǔ)

=[A]補(bǔ)

+[–B]補(bǔ)

(MOD2n)補(bǔ)碼加減運(yùn)算要點(diǎn)和運(yùn)算部件加、減法運(yùn)算統(tǒng)一采用加法來處理符號位和數(shù)值位一起參與運(yùn)算直接用Adder實(shí)現(xiàn)兩個數(shù)的加運(yùn)算(模運(yùn)算系統(tǒng))

問題:模是多少?運(yùn)算結(jié)果高位丟棄,保留低n位,相當(dāng)于取模2n

實(shí)現(xiàn)減法的主要工作在于:求[–B]補(bǔ)問題:如何求[–B]補(bǔ)?[–B]補(bǔ)=B+1ResultAddernnnAZFCinCoutnBn01MuxSelSubBOF當(dāng)Sub為1時,做減法當(dāng)Sub為0時,做加法問題:Adder中執(zhí)行的是什么運(yùn)算?相當(dāng)于無符號數(shù)加!整數(shù)加減運(yùn)算及其部件無符號數(shù)加減運(yùn)算也用該部件執(zhí)行unsignedintx=134;unsignedinty=246;intm=x;intn=y;unsignedintz1=x-y;unsignedintz2=x+y;intk1=m-n;intk2=m+n;x和m的機(jī)器數(shù)一樣:10000110,y和n的機(jī)器數(shù)一樣:11110110z1和k1的機(jī)器數(shù)一樣:10010000,CF=0,OF=0z1的值為144k1的值為-112。z2和k2的機(jī)器數(shù)一樣:01111100,CF=1,OF=1z2的值為124k2的值為124假定n=8結(jié)果說明什么?僅k1的值正確!SumAddernnnAZFCinCoutnBn01MuxSelSubBOFSFCF3.5浮點(diǎn)運(yùn)算方法浮點(diǎn)數(shù)表示規(guī)格化(討論)非規(guī)格化規(guī)格化浮點(diǎn)數(shù)據(jù)運(yùn)算具有數(shù)的表示唯一、編程方便、有效精度高等優(yōu)點(diǎn)階碼和尾數(shù)分別進(jìn)行階碼是定點(diǎn)整數(shù),尾數(shù)是定點(diǎn)小數(shù)運(yùn)算的結(jié)果必須規(guī)格化1.浮點(diǎn)加(減)運(yùn)算設(shè):A=MA×2EA,B=MB×2EB運(yùn)算步驟判零對階:EA與EB對齊求和:MA±MB規(guī)格化與舍入3.5浮點(diǎn)運(yùn)算方法判零目的簡化操作浮點(diǎn)零尾數(shù)為零浮點(diǎn)階碼下溢,浮點(diǎn)數(shù)作為機(jī)器零處理

1.浮點(diǎn)加(減)運(yùn)算對階對階使兩數(shù)的階碼相等,即對齊小數(shù)點(diǎn)原則:小階向大階看齊尾數(shù)左移會引起最高有效位的丟失,造成很大誤差。尾數(shù)右移雖引起最低有效位的丟失,但造成誤差較小具體過程求階差保留大階作為和(差)的階階小的數(shù)的尾數(shù)右移階差位(精度有損失),階碼加階差得新的階1.浮點(diǎn)加(減)運(yùn)算例:設(shè)A=0.1101×201,B=

-(0.1010)×211,求兩浮點(diǎn)數(shù)之和,要求采用補(bǔ)碼數(shù)據(jù)表示判零對階[A]補(bǔ)=0001,00.1101[B]補(bǔ)=0011,11.0110[

E]=[EA]補(bǔ)-[EB]補(bǔ)=0001+1101=1110,則

E=-2,需要對階[A]補(bǔ)=0011,00.0011,有精度損失問題1.浮點(diǎn)加(減)運(yùn)算求和就是對尾數(shù)進(jìn)行定點(diǎn)加(減)運(yùn)算上例,經(jīng)過對階后: [A]補(bǔ)=0011,00.0011, [B]補(bǔ)=0011,11.0110故:[MA]補(bǔ)+[MB]補(bǔ)=00.0011+11.0110=11.1001則:[A+B]

補(bǔ)=0011,11.10011.浮點(diǎn)加(減)運(yùn)算規(guī)格化尾數(shù)加減后,若結(jié)果不是規(guī)格化浮點(diǎn)數(shù),還須將尾數(shù)移位,使之規(guī)格化:1/2|M|<11.浮點(diǎn)加(減)運(yùn)算規(guī)格化浮點(diǎn)數(shù)尾數(shù)形式00.1

(正數(shù):原碼、補(bǔ)碼、反碼形式)11.0

(負(fù)數(shù):補(bǔ)碼、反碼形式)11.1

(負(fù)數(shù):原碼形式)1.浮點(diǎn)加(減)運(yùn)算4)規(guī)格化上例:[A+B]

補(bǔ)=0011,11.1001需要左規(guī),尾數(shù)左移1位,階碼減1(復(fù)習(xí)左規(guī)、右規(guī))則:[A+B]補(bǔ)=0010,11.00101.浮點(diǎn)加(減)運(yùn)算

舍入目的:減少誤差0舍1入法 右移時,若丟掉的位數(shù)的最高位為0,則舍去;若丟掉的位數(shù)的最高位為1,則將尾數(shù)的末位加1(相當(dāng)于舍入)恒置1法 只要產(chǎn)生丟失數(shù)的情況,將尾數(shù)的末位置11.浮點(diǎn)加(減)運(yùn)算5)舍入處理(恒置1法)上例:[A+B]

補(bǔ)=0010,11.001011.0010+111.0011浮點(diǎn)數(shù)的溢出是以其階碼溢出表現(xiàn)出來的若兩符號位相同,結(jié)果正常若符號位為01,表示正溢出若符號位為10,表示負(fù)溢出1.浮點(diǎn)加(減)運(yùn)算5)判溢出上例:[A+B]

補(bǔ)=0010,11.0010階碼符號為00,不溢出,故最終結(jié)果為A+B=2+10×(-0.1110)2.浮點(diǎn)乘除法運(yùn)算浮點(diǎn)乘法運(yùn)算的規(guī)則是:浮點(diǎn)除法運(yùn)算的規(guī)則是:判零并置結(jié)果數(shù)符

兩個操作數(shù)均不為零時,方可進(jìn)行乘(除)法運(yùn)算,否則乘積必為零,或商和余數(shù)均置成零,除數(shù)為0除法非法。階碼運(yùn)算

階碼通常用補(bǔ)碼或移碼形式表示。對階碼的運(yùn)算有兩階碼求和、兩階碼求差四種,須檢查階碼運(yùn)算結(jié)果是否溢出。尾數(shù)運(yùn)算

不同碼制的尾數(shù),采用相應(yīng)碼制的定點(diǎn)乘(除)法方案來實(shí)現(xiàn)。2.浮點(diǎn)乘除法運(yùn)算規(guī)格化、判溢出與舍入浮點(diǎn)加減法對結(jié)果的規(guī)格化及舍入處理也適用于浮點(diǎn)乘除法。方法一截斷處理:無條件地丟掉正常尾數(shù)最低位之后的全部數(shù)值。方法二舍入處理:只要尾數(shù)的最低位為1,或移出的幾位中有為1的數(shù)值位,就使最低位的值為1。0舍1入,即當(dāng)丟失的最高位的值為1時,把這個1加到最低數(shù)值位上進(jìn)行修正,否則舍去丟失的的各位的值。2.浮點(diǎn)乘除法運(yùn)算定點(diǎn)運(yùn)算器的組成移位器ALU選擇器選擇器通用寄存器組移位器:直接或者移位送出運(yùn)算結(jié)果ALU:通過加法器實(shí)現(xiàn)運(yùn)算操作選擇器:選擇操作數(shù);選擇控制條件,實(shí)現(xiàn)各種算法。通用寄存器組:提供操作數(shù),存放運(yùn)算結(jié)果。重點(diǎn)是ALU,現(xiàn)在來學(xué)習(xí)ALU的設(shè)計例2.5全加器設(shè)計所謂全加器就是能對兩個一位二進(jìn)制數(shù)相加,并加上低位來的進(jìn)位,形成“和”及“進(jìn)位”的邏輯電路。它的邏輯框圖如圖所示例2.5全加器設(shè)計(1)列真值表AiBiCiFiCi+10000000110010100110110010101011100111111例2.5全加器設(shè)計(2)化簡函數(shù)根據(jù)真值表畫Si和Ci的卡諾圖

AiBiCi00

01

11

10

0

0

1

0

1

1

1

0

1

0

Fi

AiBiCi00

01

11

10

0

0

0

1

0

1

0

1

1

1

Ci

由卡諾圖得:全加器函數(shù)回顧化簡:多功能算術(shù)/邏輯運(yùn)算單元一是就行波進(jìn)位加法器本身來說,它只能完成加法和減法兩種操作而不能完成邏輯操作。二是由于串行進(jìn)位,它的運(yùn)算時間很長。

由一位全加器構(gòu)成的行波進(jìn)位加法器,它可以實(shí)現(xiàn)補(bǔ)碼數(shù)的加法運(yùn)算和減法運(yùn)算。但是這種加法/減法器存在兩個問題:1、先解決邏輯運(yùn)算問題一位全加器(FA)的邏輯表達(dá)式為

Fi=Ai⊕Bi⊕CiCi+1=AiBi+AiCi+BiCi我們將Ai和Bi先組合成由控制參數(shù)S0,S1,S2,S3控制的組合函數(shù)Xi和Yi,然后再將Xi,Yi和下一位進(jìn)位數(shù)通過全加器進(jìn)行全加。這樣,不同的控制參數(shù)可以得到不同的組合函數(shù),因而能夠?qū)崿F(xiàn)多種算術(shù)運(yùn)算和邏輯運(yùn)算。表3.3Si與XiYi的邏輯關(guān)系

1)一位ALU單元Ai11011Ai+Bi10AiBi10Ai+Bi01AiBi01100Ai00XiS2S3YiS0S1因此,一位算術(shù)/邏輯運(yùn)算單元的邏輯表達(dá)式為Fi=Xi⊕Yi⊕CiCi+1=XiYi+YiCi+CiXiFi=Xi⊕Yi⊕CiCi+1=XiYi+YiCi+CiXi上式中進(jìn)位下標(biāo)用n+i代替原來全加器中的i;i代表集成在一片電路上的ALU的二進(jìn)制位數(shù)。對于4位一片的ALU,i=0,1,2,3。n代表若干片ALU組成更大字長的運(yùn)算器時每片電路的最低位計數(shù),例如當(dāng)4片組成16位字長的運(yùn)算器時,n=0,4,8,12。Fi=Xi⊕Yi⊕Cn+iCn+i+1=XiYi+YiCn+i+Cn+iXiALU的邏輯結(jié)構(gòu)原理框圖

控制參數(shù)S0,S1,S2,S3

分別控制輸入Ai和Bi,產(chǎn)生Y和X的函數(shù)。其中Yi是受S0,S1控制的Ai和Bi的組合函數(shù),而Xi是受S2,S3控制的Ai和Bi組合函數(shù),其函數(shù)關(guān)系如表2.4所示。

表2.4與控制參數(shù)和輸入量的關(guān)系A(chǔ)i11011Ai+Bi10AiBi10Ai+Bi01AiBi01100Ai00XiS2S3YiS0S1根據(jù)上面所列的函數(shù)關(guān)系,即可列出Xi和Yi的邏輯表達(dá)式:

Xi=S2S3+S2S3(Ai+Bi)+S2S3(Ai+Bi)+S2S3Ai

Yi=S0S1Ai+S0S1AiBi+S0S1AiBi根據(jù)上面所列的函數(shù)關(guān)系,化簡Yi的邏輯表達(dá)式得:

Yi=S0S1Ai+S0S1AiBi+S0S1AiBi

=Ai(S0S1+S0S1Bi+S0S1Bi)=Ai(S0S1(Bi+Bi)+S0S1Bi+S0S1Bi)=Ai(S0Bi+S1Bi)=Ai+(S0+Bi)(S1+Bi)=Ai+(S0S1+S0Bi+S1Bi)=Ai+S0Bi+S1Bi根據(jù)上面所列的函數(shù)關(guān)系,化簡Xi的邏輯表達(dá)式得:

Xi=S2S3+S2S3(Ai+Bi)+S2S3(Ai+Bi)+S2S3Ai

=S2S3+S2Ai+S2Bi+S3Ai+S3Bi+S2S3Ai

=S2S3+S2Ai+S2Bi+S3Bi+Ai(S3

+S2)=S2S3+S2Ai+S2Bi+S3Bi+AiS3

+AiS2

=S2S3+Ai+S2Bi+S3Bi+AiS3

=S2S3+S2Ai+AiAi+Ai(Bi+Bi)+S2Bi+S3Bi+AiS3+BiBi

=S2(S3+Ai+Bi)+Ai(S3+Ai+Bi)+Bi(S3+Ai+Bi)=

(S3+Ai+Bi)(S2

+Ai+Bi)

=S3AiBi+S2AiBiAi11011Ai+Bi10AiBi10Ai+Bi01AiBi01100Ai00XiS2S3YiS0S1進(jìn)一步化簡可得:

Xi=S3AiBi+S2AiBi

Yi=Ai+S0Bi+S1Bi

XiYi=S3AiBi+S2AiBi·Ai+S0Bi+S1Bi=Y(jié)i將Xi和Yi代入前面的進(jìn)位表達(dá)式,可簡化為:

Cn+i+1=Y(jié)i+XiCn+i=S3AiBi+S2AiBi+Ai+S0Bi+S1Bi=Ai+S0Bi+S1Bi=Y(jié)i

綜上所述,ALU的某一位邏輯表達(dá)式如下:

Xi=S3AiBi+S2AiBiYi=Ai+S0Bi+S1Bi

Fi=Xi⊕Yi⊕Cn+i

Cn+i+1=Y(jié)i+XiCn+i1)一位ALU單元

4位之間采用先行進(jìn)位公式,根據(jù)上式,每一位的進(jìn)位公式可遞推如下:第0位向第1位的進(jìn)位公式為:

Cn+1=Y(jié)0+X0Cn其中Cn是向第0位(末位)的進(jìn)位。第1位向第2位的進(jìn)位公式為:

Cn+2=Y(jié)1+X1Cn+1=Y(jié)1+Y0X1+X0X1Cn

第2位向第3位的進(jìn)位公式為:

Cn+3=Y(jié)2+X2Cn+2=Y(jié)2+Y1X1+Y0X1X2+X0X1X2Cn

第3位的進(jìn)位輸出(即整個4位運(yùn)算進(jìn)位輸出)公式為:Cn+4=Y(jié)3+X3Cn+3=Y(jié)3+Y2X3+Y1X2X3+Y0X1X2X3+X0X1X2X3Cn

2、解決串行進(jìn)位慢的問題設(shè):G=Y(jié)3+Y2X3+Y1X2X3+Y0X1X2X3

P=X0X1X2X3則:Cn+4=G+PCn

這樣,對一片ALU來說,可有三個進(jìn)位輸出。其中G稱為進(jìn)位發(fā)生輸出,P稱為進(jìn)位傳送輸出。在電路中多加這兩個進(jìn)位輸出的目的,是為了便于實(shí)現(xiàn)多片(組)ALU之間的先行進(jìn)位。

Cn+4是本片(組)的最后進(jìn)位輸出。邏輯表達(dá)式表明,這是一個先行進(jìn)位邏輯。換句話說,第0位的進(jìn)位輸入Cn可以直接傳送到最高位上去,因而可以實(shí)現(xiàn)高速

溫馨提示

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

評論

0/150

提交評論