汕娱综合资讯网
当前位置:首页 > 图片聚焦 > C语言二进制除法用左右移位来表示_c除法 > 正文

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

2017年03月21日 来源:新浪博客

摘要:有些编译器和硬件是支持乘除法和浮点运算,运用起来也是很方便!唯一让我不满的就是很占用ROM!所以某些平台恰好可以用移位来换算!学习推算心得:分母是为2的平方的情况下成立!2.4.8.16.32.64.128.256.512.1024.2048......左移1位相当于乘以2左移2位相当于乘以4左移3...

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

 

 

编辑推荐

泸州市召开2017年创建全国文明城市纳溪区工作现场会

阅读排行

Copyright © 2015 汕娱综合资讯网 http://www.333yule.net. All rights reserved.