



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
浮點型數據的雙精度表示方法
0浮點數值的生成ea754是執行浮點數的最廣泛使用的標準,使用各種cpu和浮點運算器。這個標準定義了表示浮點數的格式(包括負零-0)與反常值(denormalnumber)、一些特殊數值(無窮與非數值(NaN))以及這些數值的“浮點數運算子”。它規定了4種表示浮點數值的方式:單精確度(32位元)、雙精確度(64位元)、延伸單精確度(43位元以上,很少使用)與延伸雙精確度(79位元以上,通常以80位元實做)。其中只有32位元模式有強制要求,其他都是選擇性的。BorlandC++Builder是最知名的可視化C++應用程序開發工具之一,它易學易用的操作界面和功能強大的應用組件,可以讓程序員快速建立各種應用程序。BorlandC++Builder不僅繼承了Delphi使用簡便、功能強大、效率高等特點,而且它還結合C++語言所有的優點。C++Builder可以說是至今最容易上手的Windows開發工具。目前可視化編程中應用IEEE處理整型數據到浮點型數據運算的研究還很少,本文側重于實現將8位十六進制的數據轉換成浮點型數據,應用于解析Modbus中RTU格式通信所獲得的浮點型數據,并編寫了上位機可視化軟件來顯示。1轉換算法的介紹1.1加快各時間點的添加浮點型數據保存的格式如表1所示。其中:S表示符號位;“1”表示負數;“0”表示正數;E代表偏移127的冪數,二進制階碼=(EEEEEEEE)-127;M代表24位的尾數,存放在23個位中,只存儲23位,最高位固定為1,此方法用最少的位數實現了較高的有效位數,提高了精度“0”是一個特定值,冪數是0,尾數也是0。1.2六進制轉換為浮點數IEEE754標準中的浮點保存值不是一個直接的格式,要把十六進制轉換為一個浮點數,必須按照表1中所示的方式進行分開。這里又分為三種情況:(1)E部分不全為0也不全為1的情況;(2)E部分全部為0的情況;(3)E部分全部為1的情況。1.2.1實際樣品的編碼以0xC1420000為例,先把0xC1420000寫成表1中所示形式,如下:由上可以看出,此數是一個負數,二進制階碼=(10000010)-127=3,也就是實際的冪數。尾數是后面的二進制數10000100000000000000000,這是已存儲的23位二進制,還有一位沒有被存儲的最高位,固定為1,所以整個尾數即:110000100000000000000000則根據實際的冪數,浮點型數為:1.2.2x400bcoaf的實際應用這是一種非規格化的數據,此時k=1-(27-1)=-126,完整的位數部分為0MMMMMMMMM-MMMMMMMMMMMMMM。以0x800BCAEF為例,先把0x800BCAEF寫成表1中所示形式,如下:由上可以看出,此數是一個負數,二進制階碼k=1-127=-126,也就是實際的冪數。尾數是后面的二進制數00010111100101011101111,這是已存儲的23位二進制,還有一位沒有被存儲的最高位,固定為1,所以整個尾數即:100010111100101011101111,則根據實際的冪數,浮點型數為:1.2.3定義數的分析如果E部分全為1,則系數k=28-1=127,此時又分兩大類情況:(1)尾數是0的情況,這類情況下的數要么是正無窮大要么是負無窮大;(2)尾數不全為0的情況,根據IEEE754標準,這類情況是表示的一個沒有被定義的數,也就是不存在這樣的數。結合以上三部分的分析可得出計算步驟如下:(1)先判斷十六進制數的最高位是否為1:若為1則是負數,若為0則是正數;(2)把該數右移23位并和0xFF相與,得到二進制數(EEEEEEEE);(3)把步驟(2)得到的二進制數(EEEEEEEE)減127得到二進制的最高位冪數(設為k);(4)把原數和0x7FFFFF相與得到不帶最高位的尾數(MMMMMMMMMMMMMMMMMMMMMMM),然后再把得到的尾數的最高數置“1”,即得到完整的尾數:(1MMMMMMMMMMMMMMMMMMMMMMM);(5)在步驟(4)中得到的尾數的24位二進制數乘以2k并相加即是所求浮點數2布局表面核心構件的屬性打開BorlandC++Builder6.0,在空白的Form1上放置5個Edit控件,2個Label控件,1個按鈕,布局Form上的控件并修改屬性,如圖1所示。軟件工作流程如圖2所示。3計算結果對比把前面舉例的數據0xC1420000進行計算,計算結果如圖3所示。可由圖3看出計算結果和第1.2.1中計算結果一致。其次再把第1.2.2部分中所舉的數據用軟件進行計算,結果如圖3所示。可由圖4看出,計算結果與第1.2.2部分中分析得出的結果一致。最后把第1.2.3部分中描述的情況用軟件實現,結果如圖5所示。圖5顯示的是E部分全部為1且尾數部分不全為0的情況的計算結果。圖6上半部分顯示的是E部分全部為“1”且尾數部分全為“0”的一種計算。由于最高位為“1”,所以計算結果是負無窮大;下半部分是另外一種計算,由于最高位是“0”,所以計算結果是正無窮大。另外本文又仿真了一組Modbus協議中表示溫度的十六進制數據,轉換成浮點型數據,仿真結果如圖7所示。4實驗結果及分析為了驗證仿真結果的正確性,本文編寫了從浮點型數據轉換成十六進制數據的計算軟件,將之前的數據進行一一驗證,驗證結果如圖8、圖9所示。為確保本文中計算軟件的無誤計算,本文在-1000~1000之間隨機取數進行了大量的數據轉換計算實驗,并隨機記錄了10組數據,如表2所示。由表2中數據仿真結果及其驗證可以看出本文中所編寫的轉換算法的精度是非常高的,能夠滿足高精度測量儀器的數據轉換使用,而且可以看出小數點后保留的位數越多得出的結果越接近原始的數據。5基于浮點型數據的轉換編程利用BorlandC++Builder6.0編程開發環境完成的十六進制整型數據轉換為浮點型數據的軟件實現了從整型數據到浮點型數據的轉換計算,經過二次開發該軟件可被用于Modbus通信協議中高精度浮點型數據的傳輸打包、解析和顯示。另外,本文也完成了從浮點型數據到十
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電氣機械行業質量風險控制考核試卷
- 未列明金屬制品生產計劃與調度考核試卷
- 2025年特許金融分析師試題選擇技巧試題及答案
- 突破項目管理考試的盲區與難點試題及答案
- 農田巡邏用車方案范本
- 2023山西晉中左權縣遼州公用基礎設施投資建設有限責任公司公開招聘7人筆試參考題庫附帶答案詳解
- 舉報審計的程序與注意事項試題及答案
- 2025年國際金融理財師考試復習的自我評估方法試題及答案
- 2024年微生物檢查報告撰寫試題及答案
- 2023四川省樂山馬邊彝族自治縣國有林保護中心公開招聘企業職工3人筆試參考題庫附帶答案詳解
- 公路工程設計方案設計工作量及計劃安排
- 5G+“三早”糖尿病管理2024課件
- 足球必修課課程教學大綱
- 玻璃鋼錨桿生產工藝
- 售后工程師的快速響應和問題解決能力
- 研發部發展規劃方案
- 國開電大 可編程控制器應用實訓 形考任務1答案
- 河北省建筑施工安全技術資料管理標準表格
- 自動打標機機械原理課程設計
- 全國優質課一等獎初中音樂《深情》課件
- 社區零星維修工程投標方案(技術標)
評論
0/150
提交評論