背景
浮點(diǎn)數(shù)在計(jì)算機(jī)科學(xué)中是一種重要的數(shù)據(jù)類(lèi)型,用于表示實(shí)數(shù)。其中,F(xiàn)P32和FP16是兩種常見(jiàn)的浮點(diǎn)數(shù)格式,分別占用32位和16位。
這兩種浮點(diǎn)數(shù)遵循IEEE 754浮點(diǎn)數(shù)標(biāo)準(zhǔn),該標(biāo)準(zhǔn)規(guī)定了浮點(diǎn)數(shù)的表示和運(yùn)算方式。每個(gè)浮點(diǎn)數(shù)由三個(gè)部分組成:符號(hào)位S、指數(shù)位E和尾數(shù)位M。
FP32的二進(jìn)制表示為:SEEEEEEE_EMMMMMMM_MMMMMMMM MMMMMMMM;FP16的二進(jìn)制表示為:SEEEEEMM _MMMMMMMM。
而二進(jìn)制十進(jìn)制和十六進(jìn)制是我們?cè)?a target="_blank">芯片設(shè)計(jì)和驗(yàn)證時(shí)候直觀面對(duì)的數(shù)值進(jìn)制。在設(shè)計(jì)浮點(diǎn)數(shù)運(yùn)算單元或浮點(diǎn)數(shù)處理和轉(zhuǎn)換單元時(shí),時(shí)常需要進(jìn)行浮點(diǎn)數(shù)與進(jìn)制數(shù)以及原碼補(bǔ)碼之間的各種轉(zhuǎn)換。
這個(gè)工具就是解決這個(gè)問(wèn)題的,基于Python的struct模塊進(jìn)行浮點(diǎn)數(shù)的轉(zhuǎn)換,基于int/bin/hex函數(shù)進(jìn)行普通進(jìn)制轉(zhuǎn)換。
工具使用
根目錄下有打包好的exe文件:
怎么說(shuō)呢,這個(gè)logo基本代表了我的最高審美了。點(diǎn)開(kāi)工具后就是這個(gè)界面了:
輸出格式就支持這么多種了,對(duì)應(yīng)的輸入少一些,不過(guò)也夠用了:
然后呢,選擇輸入格式后輸入對(duì)應(yīng)的數(shù)值(請(qǐng)正確輸入啊,我沒(méi)有做檢錯(cuò)功能哈),然后點(diǎn)擊“確定”(不要用回車(chē)啊)就可以了。十進(jìn)制下可以任意輸入數(shù)值(正數(shù)負(fù)數(shù)小數(shù)等),如果為浮點(diǎn)數(shù)則只有FP32和FP16會(huì)有反饋。其他進(jìn)制不能有小數(shù),且不需要0b、0x的前綴:
結(jié)果校驗(yàn)
源碼修改
如果需要修改源碼,可以在工程目錄下的src文件夾內(nèi)進(jìn)行:
由上到下分別是圖形界面主程序、雜項(xiàng)函數(shù)和進(jìn)制轉(zhuǎn)換函數(shù)。進(jìn)制轉(zhuǎn)換函數(shù)全部為字符串輸入、字符串輸出:
f = float(i)
#old_h = hex(struct.unpack(' #old_h = str(old_h)[2:]
#第二種方式和第一種方式結(jié)果其實(shí)一樣的
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文件夾內(nèi)雙擊install.bat文件執(zhí)行,然后把生成于dist目錄下的main.exe拷出來(lái)就可以了。
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8703瀏覽量
147173 -
二進(jìn)制
+關(guān)注
關(guān)注
2文章
795瀏覽量
41652 -
浮點(diǎn)數(shù)
+關(guān)注
關(guān)注
0文章
60瀏覽量
15869 -
SRC
+關(guān)注
關(guān)注
0文章
60瀏覽量
17993 -
python
+關(guān)注
關(guān)注
56文章
4797瀏覽量
84688
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論