最近设计用到了十进制浮点数->半精度二进制浮点数的大批量转换,发现没有现成的转换代码,就根据原理用matlab撸了一个,与在线转换器对比暂时没有发现bug,通过写blog的方式debug(小黄鸭调试法),也欢迎大家帮我找茬,一起debug.
半精度浮点数数据格式16bit,遵循IEEE754的标准,1bit符号位,5bit阶码,10bit尾数。
关于浮点数的计算可以看下面这个blog,写的很详细:
https://blog.csdn.net/fwb330198372/article/details/70238982
IEEE754 在线计算器链接,可以benchmark:
http://weitz.de/ieee/
下面是matlab函数:
function [half_float_num] = dec2half_float(input_num)
%UNTITLED2 此处显示有关此函数的摘要
% 此处显示详细说明
integer = abs(fix(input_num));
Decimal = abs(input_num) - integer;
if(input_num >=0)
sign = '0';
else
sign = '1';
end
integer_bin = dec2bin(integer);
Decimal_bin = dec2bin(0,24);
d(1) = Decimal;
for i = 1:24
if(d(i)*2 >= 1)
d(i+1) = d(i)*