标题: [求助]二进制小数转换十进制小数的捷径! [打印本页]

作者: yyph5965    时间: 2008-10-15 11:19
标题: [求助]二进制小数转换十进制小数的捷径!

问题如下:现有一二进制 整数 1111 而我要把它表示为十进制小数点两位有效数字?在DX18B20温度小数转换碰到的问题!要用最简单直接的方法,不要出现2的负几次方之类的转换! 向高手求救谢谢!

补充问题:

用DS18B20精确到小数点后一位的温度测量实现

DS18B20的测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C

从DS18B20输出的后4位就是小数点后的数,其数值乘与0.0625就是实际的温度,大家知道,在8位的51单片机中,做个乘法并不容易,而且DS18B20精度为±0.5°C,有的算法直接舍去从而精确到1°C

1,我看到有些程序用查表法确定精度,这是一个很好的方法!但查表法有它的弱点要列表!

2,也看到有同志用这样的方法,

如果a是从18B20里读来的低8位值

xiaoshu1 = (a&0x0f)*10/16; //小数第一位

xiaoshu2 = (a&0x0f)*100/16%10;//小数第二位

xiaoshu=xiaoshu1*10+xiaoshu2; //小数两位

这里我就是弄不懂为什么是乘以十就是小数第一位 乘以一百就是小数第二位?

尽管精度是0.5C,没有实际意义,但这种算法是有用的,就是不知道其原理?

所以引申问题:现有一二进制 整数 N位 而我要把它表示为十进制小数点M位(M<N)有效数字?该怎样进行转换?

实际中肯定会有类似问题!


作者: yyph5965    时间: 2008-10-15 19:04

要顶  啊


作者: muselife    时间: 2008-10-18 22:41
我感觉可以用数组来代替,不过得好好编排一下才行。把0000-1111和小数对应起来,定义宏也行。不知道可行不。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1