赞
踩
#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
结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。