PIC單片機(jī)浮點(diǎn)數(shù)格式及其與十進(jìn)制數(shù)之間的轉(zhuǎn)換和程序設(shè)計(jì)步驟
出處:雁舞白沙 發(fā)布于:2010-08-06 14:19:48
在我們?cè)O(shè)計(jì)的儀表中采用PIC系列單片機(jī),碰到了浮點(diǎn)數(shù)的運(yùn)算問(wèn)題,查閱其有關(guān)資料發(fā)現(xiàn),其浮點(diǎn)數(shù)的格式及其與十進(jìn)制數(shù)之間的轉(zhuǎn)換,與我們常用的MCS-51單片機(jī)所提供的三字節(jié)、四字節(jié)浮點(diǎn)數(shù)完全不同,本文將說(shuō)明其浮點(diǎn)數(shù)的格式及其與十進(jìn)制數(shù)之間的轉(zhuǎn)換和程序設(shè)計(jì)步驟。
1 浮點(diǎn)數(shù)的格式
Microchip公司單片機(jī)所采用的浮點(diǎn)數(shù)格式是IEEE-754標(biāo)準(zhǔn)的變異型。32位浮點(diǎn)數(shù)格式為:

其中:×表示一位二進(jìn)制數(shù)0或1;eb為指數(shù)的偏差;S為浮點(diǎn)數(shù)的符號(hào)位,S=0為正數(shù),S=1為負(fù)數(shù);小數(shù)點(diǎn)“·”在符號(hào)位S的右邊;BY0BY1BY2為尾數(shù)的小數(shù)部分。
應(yīng)特別注意:
⑴浮點(diǎn)數(shù)隱含其整數(shù)部分為1。
?、剖M(jìn)制數(shù)0的浮點(diǎn)數(shù)表示為00H,00H,00H,00H。
2 浮點(diǎn)數(shù)與十進(jìn)制數(shù)之間的相互轉(zhuǎn)換
2.1 十進(jìn)制數(shù)轉(zhuǎn)換成浮點(diǎn)數(shù)
設(shè):十進(jìn)數(shù)為A,則2Z=A,Z=lnA/ln2,指數(shù)P=int(z);尾數(shù)部分X:X=A/2P,其整數(shù)部分隱含為1(零除外),將其小數(shù)部分按原碼格式化為二進(jìn)制數(shù),即為尾數(shù)的小數(shù)部分BY0BY1BY2。而指數(shù)偏差eb=P+7FH(其中的7FH為指數(shù)的偏移量)。符號(hào)位S,視十進(jìn)制數(shù)的正負(fù)而確定。
例如十進(jìn)制數(shù)50.265化為32位規(guī)格化浮點(diǎn)數(shù):A=50.265,則Z=ln50.265/ln2,P=int(Z),故P=5;X=A/2P=50.265/25=1.57078125,將0.57078125化為23位二進(jìn)制小數(shù),即是BY0BY1BY2,在位添上十進(jìn)制數(shù)的符號(hào)位S(因十進(jìn)制數(shù)為正數(shù),故S=0);而eb=P+7FH,所以,十進(jìn)制數(shù)50.265的32位規(guī)格化浮點(diǎn)數(shù)即為84H,49H,0FH,5CH。
2.2 浮點(diǎn)數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)
設(shè)浮點(diǎn)數(shù)為ebS.BY0BY1BY2。由于浮點(diǎn)數(shù)隱含尾數(shù)的整數(shù)為1,故尾數(shù)X的實(shí)際值為:
BY0BY1BY2;指數(shù)P=eb-7FH;故:十進(jìn)制數(shù)
A=(-1)S×2P×X
例:32位規(guī)格化浮點(diǎn)數(shù)84H,49H,0FH,5CH轉(zhuǎn)換為十進(jìn)制數(shù)。
符號(hào)位S=0;指數(shù)P=84H-7FH,故P=5;尾數(shù)的小數(shù)部分為49H,0FH,5CH左移一位,而尾數(shù)的整數(shù)部分隱含為1,故尾數(shù)X的實(shí)際值為:1.57078123;十進(jìn)制數(shù)A=(-1)0×25×1.57078123,即A=50.265。
3 浮點(diǎn)數(shù)與十進(jìn)制數(shù)相互轉(zhuǎn)換的程序設(shè)計(jì)
3.1 浮點(diǎn)數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的程序設(shè)計(jì)
(1)檢測(cè)浮點(diǎn)數(shù)是否為零;若為零,則十進(jìn)制數(shù)整數(shù)部分和小數(shù)部分均為零。
(2)保存浮點(diǎn)數(shù)的符號(hào)位,將浮點(diǎn)數(shù)隱含的1置于浮點(diǎn)數(shù)的符號(hào)位,指數(shù)偏差eb加1,小數(shù)點(diǎn)移到原浮點(diǎn)數(shù)的符號(hào)位之前。
(3)判斷指數(shù)偏差大于7FH否?若小于等于7FH,則該進(jìn)制數(shù)整數(shù)部分為零,浮點(diǎn)數(shù)尾數(shù)部分右移n次(注:n=7FH-指數(shù)偏差eb),即求得二進(jìn)制小數(shù)部分。若大于7FH,則將小數(shù)點(diǎn)右移n’次(注:n’=指數(shù)偏差eb-7FH),即求得二進(jìn)制整數(shù)部分和小數(shù)部分。
(4)將二進(jìn)制整數(shù)部分轉(zhuǎn)換為十進(jìn)制整數(shù);將二進(jìn)制小數(shù)部分轉(zhuǎn)換為十進(jìn)制小數(shù)。至此,完成了浮點(diǎn)數(shù)到十進(jìn)制數(shù)的轉(zhuǎn)換。
3.2 十進(jìn)制數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)的程序設(shè)計(jì)
(1)檢測(cè)十進(jìn)制數(shù)是否為零,若為零,則浮點(diǎn)數(shù)置成00H,00H,00H,00H。
(2)保存十進(jìn)制數(shù)的符號(hào)位,將十進(jìn)制數(shù)的整數(shù)部分轉(zhuǎn)換為二進(jìn)制整數(shù),將十進(jìn)制數(shù)的小數(shù)部分轉(zhuǎn)換為二進(jìn)制小數(shù)(設(shè)二進(jìn)制整數(shù)為三個(gè)字節(jié),二進(jìn)制小數(shù)為兩個(gè)字節(jié))。
(3)將浮點(diǎn)數(shù)的指數(shù)偏差eb置為7FH+23,檢測(cè)二進(jìn)制整數(shù)的位是否為1,不是,則將二進(jìn)制整數(shù)和二進(jìn)制小數(shù)聯(lián)合左移,左移,指數(shù)偏差減1,直至二進(jìn)制整數(shù)的位為1;隱含尾數(shù)整數(shù)的1,將二進(jìn)制整數(shù)的位改為數(shù)的符號(hào)位。至此,指數(shù)偏差eb單元及原二進(jìn)制整數(shù)的三個(gè)單元中的內(nèi)容,即構(gòu)成四字節(jié)浮點(diǎn)數(shù)。
應(yīng)該指出,本文所述32位浮點(diǎn)數(shù),相當(dāng)于7位十進(jìn)制數(shù);32位浮點(diǎn)數(shù)運(yùn)算程序在Microchip公司提供的有關(guān)資料中均有,但是,在調(diào)試其浮點(diǎn)子程序時(shí),發(fā)現(xiàn)0減0的結(jié)果為00H,80H,00H,00H,而不是00H,00H,00H,00H,編程時(shí)應(yīng)注意。
4 結(jié)語(yǔ)
本文中的十進(jìn)制數(shù)與浮點(diǎn)數(shù)之間相互轉(zhuǎn)換的程序設(shè)計(jì),在智能化儀表的鍵盤(pán)置數(shù)及數(shù)據(jù)顯示中,具有實(shí)用價(jià)值。這里提出了一種設(shè)計(jì)思路,沒(méi)有復(fù)雜的算法,程序設(shè)計(jì)亦較簡(jiǎn)單,工作量較少,可利用Microchip公司提供的現(xiàn)成子程序?qū)崿F(xiàn)十進(jìn)制整數(shù)與二進(jìn)制整數(shù)的相互轉(zhuǎn)換,十進(jìn)制小數(shù)與二進(jìn)制小數(shù)的相互轉(zhuǎn)換。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識(shí)介紹2025/8/29 16:58:56
- SQL核心知識(shí)點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹(shù)莓派?一文快速了解樹(shù)莓派基礎(chǔ)知識(shí)2025/6/18 16:30:52
- 編碼器的工作原理及作用1
- 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線寬的關(guān)系2
- 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
- 電腦藍(lán)屏代碼大全4
- 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
- 通俗易懂談上拉電阻與下拉電阻6
- 繼電器的工作原理以及驅(qū)動(dòng)電路7
- 電容單位8
- 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
- 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10
- PCB防靜電(ESD)設(shè)計(jì)核心規(guī)范
- 通信系統(tǒng)基石:信道化濾波器組原理與多速率信號(hào)處理
- 接觸不良對(duì)連接器性能的影響
- 開(kāi)關(guān)電源PCB設(shè)計(jì)常見(jiàn)問(wèn)題
- 多顆MOSFET并聯(lián)的散熱設(shè)計(jì)要點(diǎn)
- PCB多層板疊層設(shè)計(jì)核心規(guī)范
- 常見(jiàn)IC芯片分類(lèi)及功能介紹
- 應(yīng)對(duì)信號(hào)采集難題:抗混疊濾波器的選型與設(shè)計(jì)關(guān)鍵
- 高速連接器在通信設(shè)備中的應(yīng)用
- 電源IC過(guò)熱損壞原因分析









