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,和我们正常的四舍五入计算结果是一致的。