C语言二进制除法用左右移位来表示

有些编译器和硬件是支持乘除法和浮点运算,运用起来也是很方便!唯一让我不满的就是很占用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值