码迷,mamicode.com
首页 > 编程语言 > 详细

一起talk C栗子吧(第三十三回:C语言实例--巧用移位)

时间:2015-08-09 09:32:14      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:c语言   移位运算   


各位看官们,大家好,上一回中咱们说的是最大公约数的例子,这一回咱们说的例子是:巧用移位。闲话

休提,言归正转。让我们一起talk C栗子吧!


我们在第十九回中说过位操作的内容,并且举了一些简单的例子。因此在这里就不多说了。如果哪位看官

忘记了位操作相关的内容,可以点击这里查找原文。


我们今天说的是位操作的另外一种巧妙用法:使用移位进行除法运算。其实我们在第十九回中也提到过使

用移位进行乘除法运算,不过没有专门拿出来说。所以大家可能没有太多的印象,不过不要紧,从今天以后

大家对“使用位操作进行除法运算”有印象就可以。


大家写程序的时候,有时候用会使用除法运算,除法运算需要的注意事项是:除数不能为0.因此我们进行

除法运算前经常会判断除数是否为零。我们使用代码来说明:

     1    #include<stdio.h>

     2    

     3    int fun(int a, int b)

     4    {

     5        if(b == 0)       //判断除数是否等于0

     6            return FALSE;

     7        else

     8            return a/b;

     9    }


使用移位运算来代替除法运算时可以忽略除数为零这个陷阱。因为对除数移动零位后不会发生错误,所以

我们说是一种巧妙的使用方法。下面是具体的代码:

     1    #include<stdio.h>

     2    

     3    int fun(int a, int b)

     4    {

     5            return a>>b;   //巧用移位,没有判断除数是否等于0

     6    }


看官们,这种巧妙的用法,除了省去判断除数是否为零这一项外,程序的性能比通常的除法运算要高。当

然了,这种巧妙用法不是万能的,也有它的局限性:

  • 1.移位的对象最好是无符号数,如果不能保证这一点,那么要确认编译器进行的是称述移位操作;
  • 2.除数只是是2或者2的n次方。


看官们,巧用移位既有优点,也有缺点,正所谓:人无完人,更何况是程序呢。大家可以依据实际的情况

来使用它。就像鲁迅先生在拿来主义中提倡的:取其精华,避其糟粕。不亦乐乎?


各位看官,关于巧用移位的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。



版权声明:本文为博主原创文章,未经博主允许不得转载。

一起talk C栗子吧(第三十三回:C语言实例--巧用移位)

标签:c语言   移位运算   

原文地址:http://blog.csdn.net/talk_8/article/details/47372969

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!