打印

要将十进制浮点数123.4变成如附图所示的数据格式应该怎么办

[复制链接]
2593|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ccjchen|  楼主 | 2007-5-30 09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问各位大虾在单片机C语言中运用表达式d=3500*r/(3500-r)运算出来的十进制浮点数结果比如123.4变换成如附图所示的数据格式应该怎么办呢?也就是要把123.4这个浮点数变成   
D9 D8 D7 D6 D5 D4 D3 D2 D2      D1 D0  -   -   -  -  -  - 这样的格式应该怎么办呢?

相关帖子

沙发
computer00| | 2007-5-30 10:10 | 只看该作者

试试

unsigned short int x;

x=123.4*4;

Dh=x>>2; //D9-D2
Dl=x<<6; //D1-D0

使用特权

评论回复
板凳
ccjchen|  楼主 | 2007-5-30 11:05 | 只看该作者

大虾非常感谢您啊,十进制的数也能用移位运算吗?

使用特权

评论回复
地板
computer00| | 2007-5-30 11:23 | 只看该作者

晕菜了,难道你从来没对整数做过移位操作?

使用特权

评论回复
5
ccjchen|  楼主 | 2007-5-30 13:36 | 只看该作者

很抱歉阿,我过去只知道十六进制和二进制可以

我的道行很浅,非常不好意思啊

使用特权

评论回复
6
mohanwei| | 2007-5-30 20:58 | 只看该作者

不明白你想做什么。交流可以用库函数,存储可以当数组来

用union,把它当作一个4个字节的byte数组就可以了……

使用特权

评论回复
7
ccjchen|  楼主 | 2007-5-31 19:59 | 只看该作者

怎么用库函数呢?大虾你能不能说的详细一点阿

用union,把它当作一个4个字节的byte数组就可以了……
这句话也不明白!

使用特权

评论回复
8
mohanwei| | 2007-6-1 21:11 | 只看该作者

用sprintf把浮点数转换成字符串,用atof把字符串转换成浮点数

至于union,建议你看看书……单精度浮点数在内存中是连续存放的4个字节,所以你不用管它的值是多少,把它当成一个数组来存放就可以了。

使用特权

评论回复
9
ccjchen|  楼主 | 2007-6-3 22:43 | 只看该作者

computer00帮看看这样做对吗?

unsigned char Dh,Dl;//
float t2,rt2;
unsigned int rd;
    rt2=5000/exp(4000.1*(1/298-1/t2));
    rd=(3500*rt2/(3500-rt2))*4;
    Dh=rd>>2;Dl=rd<<6;//将十进制浮点数rt2转换为附图所示的数据格式,这样做对吗?
//其中Dh代表附图中的D9 D8 D7 D6 D5 D4 D3 D2
//Dl代表附图中的    D1 D0 .  .  .  .  .  .

使用特权

评论回复
10
computer00| | 2007-6-3 23:46 | 只看该作者

对不对,自己一试不就知道了? 凭空想象没啥意思。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝