




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、在單片機(jī)應(yīng)用系統(tǒng)的數(shù)據(jù)處理過程中,經(jīng)常會遇到小數(shù)的運(yùn)算問題,如求解BCD的增量算式、線性化處理等。因此,需要用二進(jìn)制數(shù)來表示小數(shù)。表示小數(shù)的方法一般有兩種,定點(diǎn)數(shù)和浮點(diǎn)數(shù)。定點(diǎn)數(shù)結(jié)構(gòu)簡單,與整數(shù)的運(yùn)算過程相同,運(yùn)算速度快。但隨著所表示數(shù)的范圍的擴(kuò)大,其位數(shù)成倍增加,給運(yùn)算和存儲帶來不便,而且也不能保證相對精度不變。浮點(diǎn)數(shù)的結(jié)構(gòu)相對復(fù)雜,但它能夠以固定的字節(jié)長度保持相對精度不變,用較少的字節(jié)表示很大的數(shù)的范圍,便于存儲和運(yùn)算,在處理的數(shù)據(jù)范圍較大和要求精度較高時(shí),采用浮點(diǎn)數(shù)。浮點(diǎn)數(shù)的概念常用的科學(xué)計(jì)數(shù)法來表示一個(gè)十進(jìn)制數(shù)如1234.75=1.23475E81.23475X103在數(shù)據(jù)很大或很小時(shí)
2、,采用科學(xué)計(jì)數(shù)避免了在有效數(shù)字前加0來確定小數(shù)點(diǎn)的位置,突出了數(shù)據(jù)的有效數(shù)字的位數(shù),簡化了數(shù)據(jù)的表示??梢哉J(rèn)為,科學(xué)計(jì)數(shù)法就是十進(jìn)制數(shù)的浮點(diǎn)數(shù)表示方法。在二進(jìn)制效中,也可以用類似的方法來表示一個(gè)數(shù),如1234.75=0.11(二進(jìn)制)=0.1X211一般表達(dá)式為N=SX2p在這種表示方法中,數(shù)值由四個(gè)部分組成,即尾數(shù)S及符號,階碼P及符號。在二進(jìn)制中,通過定義相應(yīng)字節(jié)或位來表示這四部分,就形成了二進(jìn)制浮點(diǎn)數(shù)。二進(jìn)制浮點(diǎn)數(shù)可以有多種不同的表示方法,下面是一種常見的三字節(jié)浮點(diǎn)數(shù)的格式:其中尾數(shù)占16位,階碼占6位,階符占1位,數(shù)符占1位。階碼通常用補(bǔ)碼來表示。在這種表示方法中,小數(shù)點(diǎn)的實(shí)際位置要由
3、階碼來確定,而階碼又是可變的,因此稱為浮點(diǎn)數(shù)。1234.75用這種格式的浮點(diǎn)數(shù)表示就是:001011100110011000用十六進(jìn)制表示為1234.75=0B9A58H-1234.75=4B9A58H0.171875=043B00H-0.171875=443B00H三字節(jié)浮點(diǎn)數(shù)所能表示的最大值為1x2639.22x1018能表示的最小數(shù)的絕對值為0.5X2-635.42X1020其所表示的數(shù)的絕對值范圍=(5.42X10-209.22X1018)由此可以看到,比三字節(jié)定點(diǎn)數(shù)表示的數(shù)的范圍大得多。按同樣方法可以定義一個(gè)四字節(jié)的浮點(diǎn)數(shù),以滿足更高精度的需要。規(guī)格化浮點(diǎn)數(shù)同一個(gè)數(shù)用浮點(diǎn)數(shù)表示可以是
4、不同的,如1234.75=0B9A58H=0C4D2CH=0D2696H雖然這幾種表示其數(shù)值是相同的,但其尾數(shù)的有效數(shù)字的位數(shù)不同,分別為16位、15位和14位。在運(yùn)算過程中,為了最大限度地保持運(yùn)算精度,應(yīng)盡量增加尾數(shù)的有效位數(shù)。這就需要對浮點(diǎn)數(shù)進(jìn)行規(guī)格化處理。在只考慮用二進(jìn)制原碼表示尾數(shù)時(shí),尾數(shù)的最高位為1,則該浮點(diǎn)數(shù)為規(guī)格化浮點(diǎn)數(shù)。在規(guī)格化浮點(diǎn)數(shù)中,用尾數(shù)為0和最小階碼表示0,三字節(jié)規(guī)格化浮點(diǎn)數(shù)的0表示為4100H。浮點(diǎn)數(shù)在運(yùn)算之前和運(yùn)算之后都要進(jìn)行規(guī)格化,規(guī)格化過程包括以下步驟:(1)首先判斷尾是否為0,如果為0,規(guī)格化結(jié)果為4100H;(2)如果尾數(shù)不為0,判斷層數(shù)的最高位是否為1,如
5、果不為1,尾數(shù)左移,階碼減1;(3)再判斷層數(shù)的最高位是否為1,如果不為1,繼續(xù)進(jìn)行規(guī)格化操作,如果為1,則規(guī)格化結(jié)束。浮點(diǎn)數(shù)運(yùn)算浮點(diǎn)數(shù)運(yùn)算包括加、減、乘、除四則運(yùn)算,比較運(yùn)算,開方運(yùn)算,多項(xiàng)式運(yùn)算和函數(shù)運(yùn)算。其它運(yùn)算都可用這些基本運(yùn)算的組合來完成。本節(jié)主要介紹浮點(diǎn)數(shù)四則運(yùn)算及其子程序。1浮點(diǎn)數(shù)的加、減運(yùn)算浮點(diǎn)數(shù)的運(yùn)算就是求結(jié)果的尾數(shù)、數(shù)符、階碼包括階符的過程。在加、減運(yùn)算中,參加運(yùn)算的浮點(diǎn)數(shù)的階碼可能是不同的,其尾數(shù)所代表的值也是不同的。在這種情況下,尾數(shù)不能直接相加或相減,必須首先使兩個(gè)數(shù)的階相同,這一過程稱為對階。一般是讓小階向大階對齊,尾數(shù)相應(yīng)右移。對階相當(dāng)于算術(shù)中的小數(shù)點(diǎn)對齊或代數(shù)中
6、的通分。尾數(shù)相加或相減得到了結(jié)果的尾數(shù)。數(shù)符由尾數(shù)的運(yùn)算結(jié)果的符號確定。階碼就是兩個(gè)數(shù)中較大的階碼。例1計(jì)算132.25+69.75解:132.25+69.75=088444H+078B80+088444H+0845c0用08CA00H=202由于兩個(gè)浮點(diǎn)數(shù)的階碼分別為8和7,先將加數(shù)的階碼變?yōu)?,其尾數(shù)右移1位。兩個(gè)數(shù)的階碼相同后,尾數(shù)直接相加即為和的尾數(shù),和的尾數(shù)的最高位為1,為規(guī)格化浮點(diǎn)數(shù)。例2計(jì)算12.39-93.1解:12.39-93.1=04C651H-07BA33用87A169H=-80.71本例中被減數(shù)小于減數(shù),差為負(fù)數(shù),結(jié)果的數(shù)符為1。差的階碼為兩個(gè)數(shù)中較大的階碼。2浮點(diǎn)數(shù)乘
7、法運(yùn)算如果設(shè)參加運(yùn)算的兩個(gè)操作數(shù)分別表示為Na=(-1)SSaxSax2PaNb=(-1)SSbxSbx2Pb它們的積為N=NaxNb(1)SS»SSbx(Sax0bx2PaPb式中SS/口SSb為兩個(gè)數(shù)的數(shù)符。乘法運(yùn)算可總結(jié)為:(1)積的數(shù)符為乘數(shù)的符號位和被乘數(shù)的符號位按模2求和,即異或;(2)積的階為乘數(shù)和被乘數(shù)的階的和;(3)積的尾數(shù)為被乘數(shù)和乘數(shù)的尾數(shù)的積。參加運(yùn)算的浮點(diǎn)數(shù)一般都是規(guī)格化的浮點(diǎn)數(shù),尾數(shù)的積小于1,不需進(jìn)行右規(guī)格化處理。但有可能小于0.5,所以需進(jìn)行左規(guī)格化處理,使積為規(guī)格化浮點(diǎn)數(shù)。如果乘數(shù)或被乘數(shù)的尾為0、則積為4100H。由于在尾數(shù)相乘時(shí),積的低16位不能
8、反映在結(jié)果中,因此,積可能會產(chǎn)生一定的誤差。例3算22.41X4.23解:22.41X4.2305B349Hx03875田07BD9AH=94.8積的階為乘數(shù)和被乘數(shù)的和,即8。尾數(shù)相乘時(shí),積小于0.5,進(jìn)行左規(guī)格化處理,階碼變?yōu)?。例4計(jì)算2586.5X<6.91)。解:2586.5氣6.91)=0CA1BOHK83DD13洋8F8BA0+-17872被乘數(shù)為正數(shù),數(shù)符為0,乘數(shù)為負(fù)數(shù),數(shù)符為1,積的數(shù)符為。1=1,積為負(fù)數(shù)。3浮點(diǎn)數(shù)的除法運(yùn)算除法運(yùn)算可以表示為N=Na/Nb=(-1)SSaxSa>2p-a)SSbxSbx2Pb=(-1)SSa-SSbx(Sa/Sb)x2Pa-P
9、b浮點(diǎn)數(shù)的除法運(yùn)算可以總結(jié)為:(1)商的數(shù)符為被除數(shù)與除數(shù)的符號位的差;(2)商的階碼為被除數(shù)和除數(shù)的階碼的差;(3)商的尾數(shù)為被除數(shù)和除數(shù)的尾數(shù)的商。規(guī)格化的浮點(diǎn)數(shù)進(jìn)行除法運(yùn)算時(shí),尾數(shù)相除,商不會小于0.5,不需進(jìn)行左規(guī)格化處理。但有可能大于1,有時(shí)需進(jìn)行右規(guī)格化處理。例5計(jì)算390.67+14.31解:390.67+14.3109C357H+04E511H05DA4EHk27.3商的階碼為被除數(shù)與除數(shù)的階碼的差。尾數(shù)相除時(shí),結(jié)果的最高位為1,商為規(guī)格化浮點(diǎn)數(shù)。例6計(jì)算-6.02+16.157解:-6.02+16.15783C0AAH058143HFFBEC8洋-0.373異號相除時(shí),商為負(fù)
10、數(shù)。由于被除數(shù)的尾數(shù)大于除數(shù)的尾數(shù),所以被除數(shù)先進(jìn)行右規(guī)格化,階碼變?yōu)?,商的階碼為-1,用補(bǔ)碼來表示。浮點(diǎn)數(shù)運(yùn)算子程序通過前面的分析可以看到,浮點(diǎn)運(yùn)算比較復(fù)雜,有其特有的方法和規(guī)律。這里介紹幾種常用的三字節(jié)浮點(diǎn)數(shù)運(yùn)算子程序,通過分析、設(shè)計(jì)這些程序,可以進(jìn)一步了解浮點(diǎn)數(shù)的運(yùn)算過程和特點(diǎn),熟悉復(fù)雜程序的設(shè)計(jì)方法。1 浮點(diǎn)數(shù)通用規(guī)格化子程序在浮點(diǎn)數(shù)運(yùn)算過程中,有時(shí)需要左規(guī)格化,有時(shí)需要右規(guī)格化。通過規(guī)格化子程序既可實(shí)現(xiàn)左規(guī)格化,又可實(shí)現(xiàn)右規(guī)格化,其具體功能如下:當(dāng)Cy=0時(shí),進(jìn)行右規(guī)格化:F0=0時(shí).對R6研)R2R3(i數(shù))右規(guī)格化1位;F0=1時(shí),對R7t)R4R5尾數(shù))右規(guī)格化1位。當(dāng)Cy=
11、1時(shí),對R6研)R3(M數(shù))執(zhí)行左規(guī)格化。程序開始時(shí),判斷是執(zhí)行左規(guī)格化還是右規(guī)格化。如果是右規(guī)格化,還要判斷是對R6研)R2R3(1數(shù))還是對R7研)R4R5(1數(shù))進(jìn)行規(guī)格化。如果是左規(guī)格化,直至把操作數(shù)變?yōu)橐?guī)格化浮點(diǎn)數(shù)。其程序框圖如圖4-13所示。程序?yàn)椋篎SDT:JCLNORMSMOVC,39H;進(jìn)行右規(guī)格化JBF0,NR7MOVA,R2;R2R3右移一位RRCA;(Cy游人尾數(shù)最高位MOVR2,AMOVA,R3RRCAMOVR3,AINCR6;階碼加1RETNR7:MOVA,R4RRCAMOVR4,AMOVA,R5RRCAMOVR5,AINCR7RETLNORMS:MOVA,R7JN
12、ZLSHIFTCJNER3,#00H,LSBIT8尾數(shù)為0,階碼41HMOVR6,#41HLSEND:RETLSHIFT:JBACC.7,LSENDLSBIT8:MOVC,F0MOVA,R3RLCAMOVR3,AMOVA,R2RLCAMOVR2,ACLRF0DECR6SJMPLNORMS2 浮點(diǎn)數(shù)加減運(yùn)算子程序8/ 16參加運(yùn)算的浮點(diǎn)數(shù)可能是正數(shù),也可能是負(fù)數(shù)。對于加法運(yùn)算當(dāng)加數(shù)和被加數(shù)的數(shù)符相同時(shí),尾數(shù)相加,不同時(shí)尾數(shù)相減;對于減法運(yùn)算,當(dāng)減數(shù)和被減數(shù)的數(shù)符相同時(shí),尾數(shù)相減、不同時(shí)尾數(shù)相加。當(dāng)兩個(gè)浮點(diǎn)數(shù)的階碼不同時(shí),要進(jìn)行對階,使小階與大階相等,因此,結(jié)果的階碼與其較大的階碼相同。在執(zhí)行加法
13、運(yùn)算時(shí),尾數(shù)有可能大于1,因此要進(jìn)行右規(guī)格化處理;執(zhí)行減法運(yùn)算時(shí),尾數(shù)有可能小于0.5,因此,要進(jìn)行左規(guī)格化處理。下面是三字節(jié)浮點(diǎn)數(shù)加、減法處理于程序,具體功能為:R6(>)R2R3尾)士R7()R4R5尾)-R粉)R2R3尾);當(dāng)位3AH=。時(shí),執(zhí)行加法;當(dāng)位3AH=1時(shí),執(zhí)行減法。程序框圖如圖414所示。程序如下:FABP:MOVA,R6MOVC,ACC.7MOV38H,C;存被加數(shù)數(shù)符XRLA,R7JNBACC.7,FAB1數(shù)符相同則轉(zhuǎn)CPL3AH;數(shù)符不等,求反運(yùn)算標(biāo)志圖4-14FAB1:MOVA,R6MOVC,ACC.6擴(kuò)展階碼符號位MOVR6,AMOVA,R7CLRCMOVA
14、,R6SUBBA,R7JZFAB2階碼相同則轉(zhuǎn)CLRF0JBACC.7,FAB6CJNER4,#00H,FAB7CJNER5,#00H,FAB7FAB2:JB3AH,FAB9轉(zhuǎn)向尾數(shù)減法MOVA,R3執(zhí)行尾數(shù)加法ADDA,R5MOVR3,AADDA,R2ADDCA,R4MOVR2,AJNCFAB4SETB39HCLRCFAB3: CLR F010 / 16LCALLFSDTFAB4:CJNER2,#00H,FAB5CJNER3,#00H,FAB5MOVR4,#41;結(jié)果為0,規(guī)格化RETFAB5:MOVA,R6MOVC,38HMOVACC.7,CXCHA,R4MOVR6,ARETFAB6:CJ
15、NER2,#00H,FAB8CJNER3,#00H,FAB8MOVA,R7MOVR6,ASJMPFAB2FAB7:CPLF0FAB8:CLRCLCALLFSDTSJMPFAB1FAB9:MOVA,R3;尾數(shù)相減CLRCSUBBA,R5MOVR3,AMOVA,R2SUBBA,R4MOVR2,AJNCFAB10CLRACLRCSUBBA,R3MOVR3,ACLRASUBBA,R2MOVR2,ACPL38HFAB10:SETBCSJMPFAB33 .浮點(diǎn)數(shù)乘法運(yùn)算子程序浮點(diǎn)數(shù)相乘時(shí),階碼直接相加即獲得積的階碼,尾數(shù)相乘時(shí),結(jié)果可能小于0.5,需進(jìn)行左規(guī)格化處理。下面是三字節(jié)浮點(diǎn)數(shù)乘法運(yùn)算子程序,具體
16、功能為:(Ro才旨向的三字節(jié)浮點(diǎn)數(shù)X(R指向的三字節(jié)浮點(diǎn)數(shù)-R4階)R2R3(i數(shù)),12 / 16圖4-15三字節(jié)浮點(diǎn)數(shù)乘法的程序框圖。程序?yàn)椋篎MUL:LCALLFMLD;傳送浮點(diǎn)數(shù)MOVA,Rq求積的數(shù)符XRLA,R7MOVC,ACC.7MOV38H,CLCALLDMUL;調(diào)用雙字節(jié)無符號數(shù)乘法子程序MOVA,R7MOVC,ACC.7MOVF0,CMOVA,R0ADDA,R1MOVR6,ASETBCLCALLFSDT;進(jìn)行規(guī)格化操作圖4-15三字節(jié)浮點(diǎn)數(shù)乘法子程序MOVA,R6MOVC,38HMOVACC.7,C;置積的數(shù)符RET注:(1)FMLD為浮點(diǎn)數(shù)取數(shù)子程序,功能為:將(R0脂向
17、的三字節(jié)浮點(diǎn)數(shù)送入R6研)R2R3(i數(shù))中,將(R1脂向的三字節(jié)浮點(diǎn)數(shù)送入R7研)R4R5(1數(shù))中。(2)DMUL為雙字節(jié)無符號數(shù)乘法子程序。4 浮點(diǎn)數(shù)除法運(yùn)算子程序在進(jìn)行除法運(yùn)算時(shí),被除數(shù)的尾數(shù)可能比除數(shù)的尾數(shù)大很多,使結(jié)果大于1。為避免這種情況,如果被除數(shù)尾數(shù)大于除數(shù)的尾數(shù),先將被除數(shù)的尾數(shù)右移,使其小于除數(shù)的尾數(shù)。階碼也相應(yīng)增加,保持其數(shù)值不變。下面是三字節(jié)浮點(diǎn)數(shù)除法運(yùn)算程序,其功能為:(R0)指向的三字節(jié)浮點(diǎn)數(shù)除以(R1脂向的三字節(jié)浮點(diǎn)數(shù)-R4研)R2R3(i數(shù))中。程序框圖如圖4-16所示。程序?yàn)椋篎DIV:LCALLFMLDMOVA,R6XRLA,R7;求商的數(shù)符MOVC,ACC.7MOV38H,CCLRAMOVR6,AMO
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 歷史建筑群保護(hù)社區(qū)就業(yè)規(guī)劃基礎(chǔ)知識點(diǎn)歸納
- 2025年間歇充氣加壓裝置試題
- 依法治校賦能學(xué)校高質(zhì)量發(fā)展的策略及實(shí)施路徑
- 建筑垃圾全過程監(jiān)控與信息化管理
- 第十二單元化學(xué)與生活復(fù)習(xí)(教學(xué)設(shè)計(jì))
- 2025至2030年中國環(huán)保型排水管行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國海魴魚行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國油壓彎板機(jī)行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國水性上光油行業(yè)投資前景及策略咨詢報(bào)告
- 2025至2030年中國染色搖粒絨布行業(yè)投資前景及策略咨詢報(bào)告
- 遼寧省丹東市二年級數(shù)學(xué)期末模考試卷詳細(xì)答案和解析
- 2024北京西城區(qū)初一(下)期末地理試題及答案
- 【正版授權(quán)】 ISO/IEC 15421:2010 EN Information technology - Automatic identification and data capture techniques - Bar code master test specifications
- 云南省昆明市官渡區(qū)2023-2024學(xué)年五年級下學(xué)期期末考試數(shù)學(xué)試題
- 地上附著物清場合同范本
- GB/T 44092-2024體育公園配置要求
- 化工設(shè)計(jì)智慧樹知到期末考試答案章節(jié)答案2024年浙江大學(xué)
- 一例脊髓損傷患者個(gè)案護(hù)理匯報(bào)
- 2024年陜西新華出版?zhèn)髅郊瘓F(tuán)有限責(zé)任公司招聘筆試沖刺題(帶答案解析)
- 農(nóng)村排灌用電安全管理
- 植入式靜脈給藥裝置(輸液港)護(hù)理專家共識
評論
0/150
提交評論