C语⾔⼆进制除法⽤左右移位来表⽰
有些编译器和硬件是⽀持乘除法和浮点运算,运⽤起来也是很⽅便!唯⼀让我不满的就是很占⽤ROM ! 所以某些平台恰好可以⽤移位来换算!
学习推算⼼得:
分母是为 2的平⽅的情况下成⽴! 2.4.8.16.32.64.128.256.512.
左移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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。