



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——IEEE754數(shù)據(jù)轉(zhuǎn)換程序1.問(wèn)題的提出
筆者在系統(tǒng)開(kāi)發(fā)中采用RS485實(shí)現(xiàn)單片機(jī)與外圍設(shè)備的通信,通信采用通用串行接口協(xié)議(USS),依照串行總線的主從通訊原理來(lái)確定訪問(wèn)的方法。USS規(guī)定了一套嚴(yán)格的通信規(guī)則,關(guān)于浮點(diǎn)數(shù)參數(shù)值,USS規(guī)定采用IEEE-754格式進(jìn)行傳送。例如,浮點(diǎn)數(shù)50.0,在通信中傳送的是它的IEEE-754格式,即4字節(jié)的十六進(jìn)制424800H.因此,單片機(jī)的C程序,在發(fā)送或接收外圍設(shè)各的參數(shù)值時(shí),需要解決如何實(shí)現(xiàn)浮點(diǎn)數(shù)與IEEE格式轉(zhuǎn)換的問(wèn)題。
2.IEEE浮點(diǎn)數(shù)的格式
在計(jì)算機(jī)中,浮點(diǎn)數(shù)的存儲(chǔ)均采用4字節(jié)的IEEE-754格式。例如,浮點(diǎn)數(shù)50.0的IEEE表示形式如下:二進(jìn)制:
其中,最高位表示符號(hào),\表示負(fù),\表示正;第23~30位表示階碼。注意:階碼是以2為底的指數(shù)再加上偏移量127.第0~22位是尾數(shù)部分。尾數(shù)的整數(shù)部分永遠(yuǎn)為1,因此不予保存,但它是隱含存在的。一個(gè)浮點(diǎn)數(shù)計(jì)算式為:
例如,前面繪出的浮點(diǎn)數(shù)的表示形式中,s=0,n=132,m=(1/2+0/4+0/8+1/16+0/32+……),則計(jì)算結(jié)果為50.0.3.浮點(diǎn)數(shù)與IEEE格式轉(zhuǎn)換
在最初的C語(yǔ)言編程中,筆者根據(jù)上面介紹的IEEE表示形式,采用移位計(jì)算的方法實(shí)現(xiàn)浮點(diǎn)數(shù)和IEEE格式轉(zhuǎn)換。當(dāng)接收到外圍設(shè)備傳來(lái)的4字節(jié)IEEE格式參數(shù)值時(shí),依次將符號(hào)、階碼、尾數(shù)通過(guò)移位取出,然后依照IEEE計(jì)算規(guī)則計(jì)算出對(duì)應(yīng)的浮點(diǎn)數(shù)。當(dāng)需要發(fā)送給外圍設(shè)備的浮點(diǎn)數(shù)時(shí),按相反的方法將其轉(zhuǎn)化為IEEE格式后再發(fā)送出去。筆者一直感覺(jué)上述方法太麻煩,而且效率太低。后來(lái)筆者想到,既然在C語(yǔ)言中浮點(diǎn)數(shù)本身就是采用IEEE格式來(lái)存儲(chǔ)的,能否利用C語(yǔ)言本身的機(jī)制來(lái)實(shí)現(xiàn)浮點(diǎn)數(shù)和IEEE格
式的轉(zhuǎn)換?經(jīng)過(guò)嘗試,發(fā)現(xiàn)利用unlon數(shù)據(jù)類型可以很好地完成這工作,即只需定義下面這個(gè)union類型:
注意:類型定義的后面別忘了還有個(gè)符號(hào)\類型雖然有兩個(gè)內(nèi)部變量,但兩個(gè)內(nèi)部變量占用同-地址空間,它只占用4個(gè)字節(jié)。內(nèi)部float變量a(占用4個(gè)字節(jié))和char數(shù)組b(同樣占用4個(gè)字節(jié))從同一個(gè)地址開(kāi)始存放,并共享同一塊內(nèi)存空間。C語(yǔ)言中,對(duì)于單精度浮點(diǎn)數(shù)a,采用四個(gè)字節(jié)(IEEE格式)來(lái)存儲(chǔ),依次存儲(chǔ)在四個(gè)連續(xù)的存儲(chǔ)單元內(nèi),低字節(jié)存儲(chǔ)在低地址存儲(chǔ)單元,高字節(jié)存在高地址存儲(chǔ)單元;字符數(shù)組b也采用和a同樣的存儲(chǔ)方式。利用unlon數(shù)據(jù)類型,可以直接訪問(wèn)浮點(diǎn)數(shù)以IEEE格式存放在存儲(chǔ)單元中的十六進(jìn)制字節(jié),通過(guò)直接讀取或修改這些十六進(jìn)制字節(jié),便可以巧妙地實(shí)現(xiàn)浮點(diǎn)數(shù)與IEEE格式的轉(zhuǎn)換。
(1)IEEE格式轉(zhuǎn)換浮點(diǎn)數(shù)
當(dāng)單片機(jī)接收來(lái)自USS總線的數(shù)據(jù)時(shí),只需將4個(gè)字節(jié)的數(shù)據(jù)放到內(nèi)部變量b中,再訪問(wèn)內(nèi)部變量a,即可實(shí)現(xiàn)轉(zhuǎn)換。下面給出示意程序,供參考。
(2)浮點(diǎn)數(shù)轉(zhuǎn)換IEEE格式
當(dāng)單片機(jī)處理好數(shù)據(jù)后,需要把浮點(diǎn)型的數(shù)據(jù)轉(zhuǎn)換成IEEE格式,輸出給USS總線。只需把數(shù)據(jù)賦予內(nèi)部變量a,再?gòu)膬?nèi)部變量b中取出對(duì)應(yīng)的4個(gè)字節(jié)即可。
2.1定義union數(shù)據(jù)
typedefunion{
floatul_Temp;uint8uc_Buf[4];}un_DtformConver;2.2應(yīng)用
un_DtformConverDtformConver;uint8i;
int32il_Temp32;floatf_Temp;
//十進(jìn)制float型數(shù)據(jù)轉(zhuǎn)換成IEEE754標(biāo)準(zhǔn)DtformConver.ul_Temp=220.1;
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)計(jì)如何影響家居家具的功能性探索試題及答案
- 硝酸鈉的化學(xué)特性與應(yīng)用研究試題及答案
- 白洋淀紀(jì)事試題及答案
- 注冊(cè)土木工程師考試全方位了解試題及答案
- 音樂(lè)結(jié)構(gòu)基礎(chǔ)知識(shí)試題及答案
- 會(huì)計(jì)各類合同范例
- 中國(guó)常用合同范例
- 全渠道銷售合同范例
- 西皇城考試題及答案
- 加盟食品店進(jìn)貨合同范例
- 手機(jī)媒體概論(自考14237)復(fù)習(xí)題庫(kù)(含真題、典型題)
- 2024年陜西省普通高中學(xué)業(yè)水平合格性考試歷史試題(解析版)
- 拉美文化學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 集裝箱七點(diǎn)檢查表
- 學(xué)習(xí)民法典 做遵紀(jì)守法小學(xué)生專題課件
- 亦莊開(kāi)發(fā)區(qū)企業(yè)名錄
- 機(jī)械制圖-鍵連接
- 2022年 江蘇省宿遷市中考數(shù)學(xué)試卷及解析
- 建設(shè)工程項(xiàng)目質(zhì)量控制(課件).
- 商品混凝土公司員工培訓(xùn)方案(參考)
- (參考)混凝土配合比設(shè)計(jì)原始記錄
評(píng)論
0/150
提交評(píng)論