如何在程序中得到一个浮点数的组成数

发布时间:2010-7-24 21:03    发布者:lavida
关键词: 程序 , 浮点数 , 组成数
笔者在编制应用程序时有这样的要求:将运算的结果(浮点数)存入EEPROM中。我们知道,浮点数在C语言中是以IEEE格式存储的,一个浮点数占用四个字节,例如浮点数34.526存为(160,26,10,66)这四个数。要将一个浮点数存入EEPROM,实际上就是要存这四个数。那么如何在程序中得到一个浮点数的组成数呢?

浮点数在存储时,是存储连续的字节中的,只要设法找到存储位置,就可以得到这些数了。可以定义一个void的指针,将此指针指向需要存储的浮点数,然后将此指针强制转化为char型,这样,利用指针就可以得到组成该浮点数的各个字节的值了。具体程序如下:  

#define uchar unsigned char#define uint unsigned intvoid FtoC(void)  
{ float a ;  
uchar i,*px  
uchar x[4] ; /*定义字符数组,准备存储浮点数的四个字节*、  
void *pf ;  
px=x ; /*px指针指向数组x*/  
pf=&a ; /*void 型指针指向浮点数首地址*/  
a=34.526 ;  
for(i=0 ;i{ *(px+i)=*((char *)pf+i) ; /*强制void 型指针转成char型,因为*/  
} /*void型指针不能运算*/  
}  

如果已将数存入EEPROM,要将其取出合并,方法也是一样,可参考下面的程序。  

#define uchar unsigned char#define uint unsigned int  
void CtoF(void)  
{ float a ;  
uchar i,*px  
uchar x[4]={56,180,150,73} ;  
void *pf ;  
px=x ;  
pf=&a ;  
for(i=0 ;i{ *((char *)pf+i)=*(px+i) ;  
}  
}
本文地址:https://www.eechina.com/thread-16664-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表