0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

縫縫補(bǔ)補(bǔ)的浮點(diǎn)數(shù)進(jìn)制轉(zhuǎn)換器

冬至子 ? 來(lái)源:芯時(shí)代青年 ? 作者:尼德蘭的喵 ? 2023-12-04 14:00 ? 次閱讀

背景

浮點(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ù)全部為字符串輸入、字符串輸出:

def float_to_hex_fp16(i: str) -> str:
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)就可以了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 轉(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
    SRC
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    17993
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84688
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    labview里單精度浮點(diǎn)數(shù)和十六進(jìn)制數(shù)如何相互轉(zhuǎn)換

    我需要將一個(gè)單精度的浮點(diǎn)數(shù)(如0.33)轉(zhuǎn)換為十六進(jìn)制數(shù)然后通過(guò)串口發(fā)送,同時(shí)還需將串口讀取的十六進(jìn)制數(shù)轉(zhuǎn)換為單精度
    發(fā)表于 10-14 11:04

    進(jìn)制浮點(diǎn)數(shù)怎么轉(zhuǎn)換成16進(jìn)制

    進(jìn)制浮點(diǎn)數(shù)怎么轉(zhuǎn)換成16進(jìn)制,比如十進(jìn)制的0.03怎么轉(zhuǎn)換成16
    發(fā)表于 08-23 15:18

    請(qǐng)問(wèn)怎么將IEEE 754(32位十六進(jìn)制轉(zhuǎn)換為十進(jìn)制浮點(diǎn)數(shù)?

    親愛(ài)的先生,我需要知道把IEEE 754(32位十六進(jìn)制)轉(zhuǎn)換成pic24小數(shù)浮點(diǎn)數(shù)的方法。例如,如果我要將下面的十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換
    發(fā)表于 09-04 06:54

    如何將十六進(jìn)制浮點(diǎn)數(shù)轉(zhuǎn)換成十進(jìn)制浮點(diǎn)數(shù)?

    如題...請(qǐng)教大俠。。四個(gè)字節(jié)的浮點(diǎn)數(shù),十六進(jìn)制的,如何轉(zhuǎn)換成十進(jìn)制浮點(diǎn)數(shù)
    發(fā)表于 10-29 04:35

    數(shù)據(jù)轉(zhuǎn)換:十六進(jìn)制浮點(diǎn)數(shù)的互相轉(zhuǎn)換

    數(shù)據(jù)轉(zhuǎn)換:十六進(jìn)制浮點(diǎn)數(shù)的互相轉(zhuǎn)換在DSP上做數(shù)據(jù)處理遇到,浮點(diǎn)型存儲(chǔ)格式,轉(zhuǎn)換成十
    發(fā)表于 10-25 14:57

    浮點(diǎn)數(shù)的表示方法

    浮點(diǎn)數(shù)的表示方法  浮點(diǎn)數(shù),是指小數(shù)點(diǎn)在數(shù)據(jù)中的位置可以左右移動(dòng)的數(shù)據(jù)。它通常被表示成:    N = M* RE  這里的M(Mantissa)被稱(chēng)為浮點(diǎn)數(shù)
    發(fā)表于 10-13 17:13 ?1.6w次閱讀
    <b class='flag-5'>浮點(diǎn)數(shù)</b>的表示方法

    PIC單片機(jī)浮點(diǎn)數(shù)與十進(jìn)制數(shù)轉(zhuǎn)換

    重點(diǎn)說(shuō)明浮點(diǎn)數(shù)的格式,十進(jìn)制數(shù)與浮點(diǎn)之間的相互轉(zhuǎn)換以及程序設(shè)計(jì)。
    發(fā)表于 06-28 14:46 ?2881次閱讀
    PIC單片機(jī)<b class='flag-5'>浮點(diǎn)數(shù)</b>與十<b class='flag-5'>進(jìn)制</b>數(shù)<b class='flag-5'>轉(zhuǎn)換</b>

    浮點(diǎn)數(shù)十六進(jìn)制轉(zhuǎn)換器綠色免費(fèi)版

    浮點(diǎn)數(shù)十六進(jìn)制轉(zhuǎn)換器 V0.98 綠色免費(fèi)版
    發(fā)表于 05-20 17:01 ?0次下載

    浮點(diǎn)數(shù)十六進(jìn)制轉(zhuǎn)換器應(yīng)用程序軟件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是浮點(diǎn)數(shù)十六進(jìn)制轉(zhuǎn)換器應(yīng)用程序軟件免費(fèi)下載。
    發(fā)表于 04-13 08:00 ?7次下載
    <b class='flag-5'>浮點(diǎn)數(shù)十六進(jìn)制</b><b class='flag-5'>轉(zhuǎn)換器</b>應(yīng)用程序軟件免費(fèi)下載

    浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)

    浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)和整數(shù)不同,因?yàn)檎麛?shù)都可以轉(zhuǎn)換為一一對(duì)應(yīng)的二進(jìn)制數(shù)據(jù)。而浮點(diǎn)數(shù)的存儲(chǔ)是由符號(hào)位 (sign) + 指數(shù)位 (exponent) + 小數(shù)位 (fraction) 組
    的頭像 發(fā)表于 09-20 10:52 ?4067次閱讀
    <b class='flag-5'>浮點(diǎn)數(shù)</b>在內(nèi)存中的存儲(chǔ)

    解析python整數(shù)浮點(diǎn)數(shù)不同進(jìn)制整數(shù)

    python數(shù)字包括整數(shù)、浮點(diǎn)數(shù)、復(fù)數(shù)、有理分?jǐn)?shù)等,整數(shù)還可以用不同進(jìn)制表示。
    的頭像 發(fā)表于 03-10 10:01 ?1072次閱讀

    PLC中浮點(diǎn)數(shù)的二進(jìn)制表示

    我們?nèi)粘J褂玫母黝?lèi)數(shù)據(jù),都是以二進(jìn)制的方式存儲(chǔ)的。以浮點(diǎn)數(shù)為例,在PLC中其表示方式使用了IEEE 754標(biāo)準(zhǔn)。許多編程語(yǔ)言中浮點(diǎn)數(shù)的實(shí)現(xiàn)也遵循該標(biāo)準(zhǔn)。
    的頭像 發(fā)表于 03-23 13:50 ?5340次閱讀
    PLC中<b class='flag-5'>浮點(diǎn)數(shù)</b>的二<b class='flag-5'>進(jìn)制</b>表示

    C浮點(diǎn)數(shù)與字符轉(zhuǎn)換工具

    C浮點(diǎn)數(shù)與字符轉(zhuǎn)換工具免費(fèi)下載。
    發(fā)表于 06-19 18:17 ?0次下載

    單精度浮點(diǎn)數(shù)和十六進(jìn)制相互轉(zhuǎn)換例程(基于LV)

    十六進(jìn)制字符轉(zhuǎn)成普通字符十六進(jìn)制字符轉(zhuǎn)成浮點(diǎn)數(shù)浮點(diǎn)數(shù)轉(zhuǎn)成十六進(jìn)制字符應(yīng)用于上位機(jī)和PLC通訊的數(shù)據(jù)轉(zhuǎn)換
    發(fā)表于 08-07 15:12 ?28次下載

    modbus浮點(diǎn)數(shù)怎么讀取

    常重要的。 首先,要理解Modbus浮點(diǎn)數(shù)的表示方式。在Modbus協(xié)議中,浮點(diǎn)數(shù)采用了IEEE 754標(biāo)準(zhǔn)進(jìn)行編碼和解碼。IEEE 754標(biāo)準(zhǔn)定義了浮點(diǎn)數(shù)的二進(jìn)制表示方法,包括符號(hào)位
    的頭像 發(fā)表于 12-28 14:38 ?6351次閱讀