单片机中浮点数取值问题
来源:互联网 发布:上海昕致软件 编辑:程序博客网 时间:2024/06/08 12:06
由于在部分开发编译器中,无法使用float型数据,在单片机中取float型数据的整数部分和小数部分有点麻烦,
在网上看了别的兄弟代码,自己改下了下,测试还可以用。
typedef struct __buf_to_float_
{int inter_part;
int decimal;
int sig;
}float_data;
char bufx[4] = {0x43,0x6a,0x00,0x00};
float_data buf_to_Float_get(char *bufx)
{
int FloatValue = 0;
float_data ret;
int Exp;
int FloatPath;
int MantissaPart;
ret.sig = 1;
FloatValue |= bufx[0]<<24;
FloatValue |= bufx[1]<<16;
FloatValue |= bufx[2]<<8;
FloatValue |= bufx[3];
if(FloatValue&0x80000000) //最高位为符号位
{
ret.sig = -1;
}
Exp = (FloatValue>>23)&0xff; //取得指数字段,一个字节。第二到第9字节
MantissaPart=(FloatValue&0x7fffff)|0x800000;//尾数字段,23位加一个默认位,共24位。
ret.inter_part = (MantissaPart>>(150-Exp));
FloatPath = MantissaPart&(0xffffff>>(Exp-126));//取得小数部分
ret.decimal = FloatPath/float(1<<(150-Exp));
return ret;
}
int main(void)
{
float_data ret;
ret = buf_to_Float_get(bufx);
printf("\n符号:=%d 整数部分 =%d,小数部分=%d\n",ret.sig,ret.inter_part,ret.decimal);
return 0;
}
阅读全文
0 0
- 单片机中浮点数取值问题
- 单片机中使用printf打印浮点数问题
- 单片机C 浮点数转化为字符数组问题
- 在单片机系统中如何精确显示浮点小数
- 单片机中实现浮点数转换陈字符串
- 单片机中16进制与浮点数互换
- STC 51 单片机 浮点运算。
- 单片机传递浮点数方法
- 浮点型数据单片机传输
- javascript 中浮点数乘法的问题
- JAVA中浮点数的精度问题
- Delphi 中浮点比较的怪问题
- Java中浮点数的精度问题
- Java中浮点数的精度问题
- JS中浮点数精度的问题
- js中浮点数的精度问题
- JAVA中浮点数的精度问题
- php中浮点数计算问题
- 有参构造方法的作用和无参构造方法的作用
- 判断DataTale中判断某个字段中包含某个数据
- Tomcat能够稳定支持的最大用户并发数
- python 爬取公众号文章
- 火车头免费版 post 只采集列表页面内容
- 单片机中浮点数取值问题
- 习题 6.9 有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。
- sigaction函数
- centos6.x yum安装 apache, php, mysql
- 想成为千万富翁?首先你要做到这14件事
- CF840D:Destiny(线段树)
- Leetcode 560. Subarray Sum Equals K
- 《数论概论》读书笔记 第23章 二次剩余
- 聊天机器人资源合集:项目,语聊,论文,教程。