#32位浮点数(16进制表示)转化为10进制数值的简易MATLAB代码
因为测试后需要把数据(16进制表示)转化为正常人类直观看的懂的10进制数,但是在网上找了很久都没找到相关的方法,于是用自己蹩脚的MATLAB语言简单写了一个转换方法(应该挺简单的)。第一次用博客记录,不太会用。
实验数据与转换公式如下图所示:
在这里插入代码片
close all;
clear;
clc;
%功能:将32位的16进制科学表示的浮点数值转化为10进制
%1、先转化为2进制
data=dec2bin(hex2dec('C41C6000'));%输入数据 C41C6000 3CBCB9A1
d=double(data)-48; %char类型数字用assii码表示,数字0对应48,所以要减去48.
L=length(data);
D=32-L;
%不足32位时补足32位(高位为0的情况)
for i=1:D
d=[i-i,d];
end
b=char(d+48)%b的值为二进制值
a=d(1,2:9); %a指的是阶数的二进制
c=bin2dec(char(a+48));%c指的是阶数的十进制
e=2^(c-127);
o=(-1)^d(1,1);
r=e*o;
r1=(2^(c-127))*((-1)^d(1,1));%浮点数转化公式的前半部分
w=d(1,10:32); %取数值部分
l=length(w);
m=0;
for j=1:l
m=m+w(1,j)/(2^j);
end
p=(1+m)*r
结果: