背景
浮点数在计算机科学中是一种重要的数据类型,用于表示实数。其中,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拷出来就可以了。
TD与WCDMA混合组网下的一体化基站构想
浅析电源滤波器的电路设计与制作
LCIA低成本自动化助力医疗器械高效生产
二极管在脉冲发生电路中的应用
浅谈什么是大电流发生器
缝缝补补的浮点数进制转换器
AMD 7nm 芯片将爆发式增长,迎来黄金期
科技求真:关于火热专利战背后的冷思考
为超声医疗成像设备指定连接器时需要考虑的五个特性
【璟丰机电】伺服执行元件具体构成以及相应分类
兆驰半导体助力中国智能制造
IDC端子的工作原理是怎样的
钙钛矿量子点一维拓扑绿色激光器
宽带电力载波(PLC)集中器网关简介
超声波塑胶熔接的几种方式(二)
小米144Hz带鱼曲面屏评测 年轻人的第一台144Hz带鱼屏曲面显示器
电动机缺一相时会发生什么?
专家观点:处理器核心越多越好吗?
TVS选型及参数详解
互联网融入保险市场,将迎来怎样的发展机遇