背景
浮點數在計算機科學中是一種重要的數據類型,用于表示實數。其中,FP32和FP16是兩種常見的浮點數格式,分別占用32位和16位。
這兩種浮點數遵循IEEE 754浮點數標準,該標準規定了浮點數的表示和運算方式。每個浮點數由三個部分組成:符號位S、指數位E和尾數位M。
FP32的二進制表示為:SEEEEEEE_EMMMMMMM_MMMMMMMM MMMMMMMM;FP16的二進制表示為:SEEEEEMM _MMMMMMMM。
而二進制十進制和十六進制是我們在芯片設計和驗證時候直觀面對的數值進制。在設計浮點數運算單元或浮點數處理和轉換單元時,時常需要進行浮點數與進制數以及原碼補碼之間的各種轉換。
這個工具就是解決這個問題的,基于Python的struct模塊進行浮點數的轉換,基于int/bin/hex函數進行普通進制轉換。
工具使用
根目錄下有打包好的exe文件:
怎么說呢,這個logo基本代表了我的最高審美了。點開工具后就是這個界面了:
輸出格式就支持這么多種了,對應的輸入少一些,不過也夠用了:
然后呢,選擇輸入格式后輸入對應的數值(請正確輸入啊,我沒有做檢錯功能哈),然后點擊“確定”(不要用回車啊)就可以了。十進制下可以任意輸入數值(正數負數小數等),如果為浮點數則只有FP32和FP16會有反饋。其他進制不能有小數,且不需要0b、0x的前綴:
結果校驗
源碼修改
如果需要修改源碼,可以在工程目錄下的src文件夾內進行:
由上到下分別是圖形界面主程序、雜項函數和進制轉換函數。進制轉換函數全部為字符串輸入、字符串輸出:
f = float(i)
#old_h = hex(struct.unpack(' #old_h = str(old_h)[2:]
#第二種方式和第一種方式結果其實一樣的
packed_data = struct.pack('!e', f)
h = ''.join(format(byte, '02x') for byte in packed_data)
#return str(h)[2:]
return str(h)',>
程序生成
如果需要重新生成exe文件,可以在工程目錄下的exe文件夾內雙擊install.bat文件執行,然后把生成于dist目錄下的main.exe拷出來就可以了。
-
轉換器
+關注
關注
27文章
8941瀏覽量
150677 -
二進制
+關注
關注
2文章
803瀏覽量
42134 -
浮點數
+關注
關注
0文章
61瀏覽量
16074 -
SRC
+關注
關注
0文章
61瀏覽量
18317 -
python
+關注
關注
56文章
4823瀏覽量
86149
發布評論請先 登錄
labview里單精度浮點數和十六進制數如何相互轉換?
請問怎么將IEEE 754(32位十六進制)轉換為十進制浮點數?
浮點數的表示方法

浮點數在內存中的存儲

評論