有些编译器和硬件是支持乘除法和浮点运算,运用起来也是很方便!唯一让我不满的就是很占用ROM ! 所以某些平台恰好可以用移位来换算!
学习推算心得:
分母是为 2的平方的情况下成立! 2.4.8.16.32.64.128.256.512.1024.2048…
左移1位 相当于 乘以2 左移2位 相当于 乘以4 左移3位 相当于 乘以8 左移4位 相当于 乘以16 … 是以一累加, 乘以2的平方累加
右移1位 相当于 除以2 右移2位 相当于 除以4 右移3位 相当于 除以8 右移4位 相当于 除以16 … 是以一累减, 乘以2的平方累减
类题一:LM75A 温度传感器中的温度转换!
1、保留了两位小数点 value =t*0.125; 0.125为 8分之一乘以100= 8分之100 t =value * 100; 相当于
t = (t << 6)+(t << 5)+(t << 2); 64 32 4 刚好为 100 t = t>>3; 相当于除 8
2、保留了一位小数点
value =t*1.25; 1.25 为 4分之5 相当于 t = (t << 2) + t; 4 t = t >> 2;
类题二:DS18B20 温度传感器中的温度转换!
1、保留了两位小数点 value =t*0.0625;
t =value * 100; t = 1/16 * 100 = 25/4;
相当于
t = (t << 4)+(t << 3)+ t ; 16 8 1 刚好为 25
t = t>>2; 相当于除 4
2、保留了一位小数点
value =t*0.628; 0.628 为 8分之5 相当于 t = (t << 2) + t; 4 t = t >> 3; 相当于除 8