0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

缝缝补补的浮点数进制转换器

冬至子 来源:芯时代青年 作者:尼德兰的喵 2023-12-04 14:00 次阅读

背景

浮点数在计算机科学中是一种重要的数据类型,用于表示实数。其中,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文件夹内进行:

图片

由上到下分别是图形界面主程序、杂项函数和进制转换函数。进制转换函数全部为字符串输入、字符串输出:

def float_to_hex_fp16(i: str) -> str:
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

    文章

    8593

    浏览量

    146622
  • 二进制
    +关注

    关注

    2

    文章

    772

    浏览量

    41549
  • 浮点数
    +关注

    关注

    0

    文章

    59

    浏览量

    15850
  • SRC
    SRC
    +关注

    关注

    0

    文章

    60

    浏览量

    17939
  • python
    +关注

    关注

    54

    文章

    4763

    浏览量

    84339
收藏 人收藏

    评论

    相关推荐

    labview里单精度浮点数和十六进制数如何相互转换

    我需要将一个单精度的浮点数(如0.33)转换为十六进制数然后通过串口发送,同时还需将串口读取的十六进制转换为单精度
    发表于 10-14 11:04

    进制浮点数怎么转换成16进制

    进制浮点数怎么转换成16进制,比如十进制的0.03怎么转换成16
    发表于 08-23 15:18

    请问怎么将IEEE 754(32位十六进制转换为十进制浮点数

    亲爱的先生,我需要知道把IEEE 754(32位十六进制)转换成pic24小数浮点数的方法。例如,如果我要将下面的十六进制数据转换
    发表于 09-04 06:54

    如何将十六进制浮点数转换成十进制浮点数

    如题...请教大侠。。四个字节的浮点数,十六进制的,如何转换成十进制浮点数
    发表于 10-29 04:35

    数据转换:十六进制浮点数的互相转换

    数据转换:十六进制浮点数的互相转换在DSP上做数据处理遇到,浮点型存储格式,转换成十
    发表于 10-25 14:57

    浮点数的表示方法

    浮点数的表示方法  浮点数,是指小数点在数据中的位置可以左右移动的数据。它通常被表示成:    N = M* RE  这里的M(Mantissa)被称为浮点数
    发表于 10-13 17:13 1.6w次阅读
    <b class='flag-5'>浮点数</b>的表示方法

    PIC单片机浮点数与十进制转换

    重点说明浮点数的格式,十进制数与浮点之间的相互转换以及程序设计。
    发表于 06-28 14:46 2837次阅读
    PIC单片机<b class='flag-5'>浮点数</b>与十<b class='flag-5'>进制</b>数<b class='flag-5'>转换</b>

    浮点数十六进制转换器绿色免费版

    浮点数十六进制转换器 V0.98 绿色免费版
    发表于 05-20 17:01 0次下载

    浮点数十六进制转换器应用程序软件免费下载

    本文档的主要内容详细介绍的是浮点数十六进制转换器应用程序软件免费下载。
    发表于 04-13 08:00 7次下载
    <b class='flag-5'>浮点数十六进制</b><b class='flag-5'>转换器</b>应用程序软件免费下载

    浮点数在内存中的存储

    浮点数在内存中的存储和整数不同,因为整数都可以转换为一一对应的二进制数据。而浮点数的存储是由符号位 (sign) + 指数位 (exponent) + 小数位 (fraction) 组
    的头像 发表于 09-20 10:52 4002次阅读
    <b class='flag-5'>浮点数</b>在内存中的存储

    解析python整数浮点数不同进制整数

    python数字包括整数、浮点数、复数、有理分数等,整数还可以用不同进制表示。
    的头像 发表于 03-10 10:01 1013次阅读

    PLC中浮点数的二进制表示

    我们日常使用的各类数据,都是以二进制的方式存储的。以浮点数为例,在PLC中其表示方式使用了IEEE 754标准。许多编程语言中浮点数的实现也遵循该标准。
    的头像 发表于 03-23 13:50 4931次阅读
    PLC中<b class='flag-5'>浮点数</b>的二<b class='flag-5'>进制</b>表示

    C浮点数与字符转换工具

    C浮点数与字符转换工具免费下载。
    发表于 06-19 18:17 0次下载

    单精度浮点数和十六进制相互转换例程(基于LV)

    十六进制字符转成普通字符十六进制字符转成浮点数浮点数转成十六进制字符应用于上位机和PLC通讯的数据转换
    发表于 08-07 15:12 24次下载

    modbus浮点数怎么读取

    常重要的。 首先,要理解Modbus浮点数的表示方式。在Modbus协议中,浮点数采用了IEEE 754标准进行编码和解码。IEEE 754标准定义了浮点数的二进制表示方法,包括符号位
    的头像 发表于 12-28 14:38 5559次阅读