浮点数的存储格式和运算一问!
rabbit2006/10/21电子技术 IP:四川

如题!

现在需要将A/D转换器过来的12位数据跟0.0625这个小数相乘得出一个温度数值

但不知道小数在单片机里面的存储格式和运算方式啊郁闷!(用51单片机)

另外,51单片机的指令只可以处理8位整数,但A/D的数据位12位,也就是要分成两个字节来存储。他被分成了两个字节后我如何运算啊?

[em06][em06][em06]
来自:电子信息 / 电子技术
4
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
mass_lynnxy
18年5个月前 IP:未同步
13781

定标方法可以使用一下.数据采入后到数据输出前都以放大需要的倍数存储,这样就可以以定点方式使用存储,可以避免浮点运算.

浮点表示就是以底数和指数方式分两部分表示,按照数制的定义,

十进制表示数:a(n)*10^n+...+a(1)*10^1+a(0)*10^0+a(-1)*10^(-1)+...+a(-m)*10^(-m)

二进制表示数:a(n)*2^n+...+a(1)*2^1+a(0)*2^0+a(-1)*2^(-1)+...+a(-m)*2^(-m)

这样就可以知道浮点表示为:

十进制浮点:b*10^n (0<b<10)这个\"10\"是十进制的数

二进制浮点:b*2^n (0<b<10)这个\"10\"是二进制的数

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
mass_lynnxy
18年5个月前 IP:未同步
13782

分成两个字节后就分两部分计算,不过要注意进位和借位.反正以个位对齐就好了。

引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
ldfa
18年4个月前 IP:未同步
13783
单片机内一般不提倡用浮点数,2个字节就是1个字。要是汇编你自个处理字的4则运算吧,要是c,就用int类型
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
rabbit
学者 笔友
文章
5
回复
80
学术分
1
2005/11/03注册,2年8个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}