首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

DS18b20,抢救,16进制的数为什么乘以0.0625就变成10进制数了

2013-10-01 
DS18b20,急救,16进制的数为什么乘以0.0625就变成10进制数了 tem_lreadbyte() tem_hreadbyte() ttem_h

DS18b20,急救,16进制的数为什么乘以0.0625就变成10进制数了
 tem_l=readbyte();
 tem_h=readbyte();
 t=tem_h<<8;
 t=t|tem_l;
 tt=t*0.0625;
 t=tt*10+0.5;
 return(t);
问题一:tem_l和tem_2为二进数,怎么经过  tt=t*0.0625就变成了10进制数


问题二: t=tt*10+0.5;这句话是四舍五入,怎么理解,请举例说明
[解决办法]
1、结果为几进制,取决于tt的变量类型,几进制对于电脑都是一样的,你可以直接用数码管显示tem_1,也可以得到十进制的结果。
2、第二个问题说清楚些,我没看懂
[解决办法]
第二个问题,四舍五入。
因为在C中,整型数的除法没有小数部分,只有整数部分,就是截尾,比如 3.1~3.9 取整都是3,没有进行四舍五入到最近的整数。
t=tt*10+0.5,就实现了四舍五入,比如t的值在[9.5~10.5),加0.5之后,t [10.0~11.0), 按照C的运算规则, t = 10,和我们正常的四舍五入计算结果是一致的。

热点排行