背景
浮点数在计算机科学中是一种重要的数据类型,用于表示实数。其中,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文章
8593浏览量
146622 -
二进制
+关注
关注
2文章
772浏览量
41549 -
浮点数
+关注
关注
0文章
59浏览量
15850 -
SRC
+关注
关注
0文章
60浏览量
17939 -
python
+关注
关注
54文章
4763浏览量
84339
发布评论请先 登录
相关推荐
评论