32位浮点数(16进制表示)转化为10进制数值的简易MATLAB代码

#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  

结果:
在这里插入图片描述

  • 8
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值