微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 浮点型数据存储方式分析

浮点型数据存储方式分析

时间:12-01 来源:互联网 点击:

it的底数(只存储23-bit)

需要注意,浮点数为0时,指数和底数都为0,但此前的公式不成立。因为2的0次方为1,所以,0是个特例。当然,这个特例也不用认为去干扰,编译器会自动去识别。

这样我们就可以知道前面这个题中输出的结果啦,从上面的分析可以知道一个float型的数的基本存储方式,按照上面的实现可以知道5.0的存储方式为如下的形式:

01000000101000000000000000000000

从上面的这个存储形式我们可以得到基本的整形数值时0x40A00000。进而也就知道了4个bytes中的数值大小。

这是充分利用了联合体的共享内存特性,我们改变程序如下所示:

#include

typedefuniontest
{
float a;
int i;
char c[4];
}Test;

int main()
{
Test t;
t.a = 5.0;
printf("%f",t.a);
printf("%d",t.i);
printf("%c,%c,%c,%c",t.c[3],t.c[2],t.c[1],t.c[0]);

t.i = 65;
printf("%f",t.a);
printf("%d",t.i);
printf("%c,%c,%c,%c",t.c[3],t.c[2],t.c[1],t.c[0]);
return 0;
}

根据上面的分析,可以比较方便的计算出结果如下所示:

当然这只是我在X86系统中的输出,在大端系统中会是什么结果我不得而知,具体的要参看IEEE标准。

float类型的数据是比较复杂的问题,我将在后面认真研究,争取早日解决各种问题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top