各位看官们,大家好,上一回中咱们说的是最大公约数的例子,这一回咱们说的例子是:巧用移位。闲话
休提,言归正转。让我们一起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 }
看官们,这种巧妙的用法,除了省去判断除数是否为零这一项外,程序的性能比通常的除法运算要高。当
然了,这种巧妙用法不是万能的,也有它的局限性:
看官们,巧用移位既有优点,也有缺点,正所谓:人无完人,更何况是程序呢。大家可以依据实际的情况
来使用它。就像鲁迅先生在拿来主义中提倡的:取其精华,避其糟粕。不亦乐乎?
各位看官,关于巧用移位的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。
版权声明:本文为博主原创文章,未经博主允许不得转载。
一起talk C栗子吧(第三十三回:C语言实例--巧用移位)
原文地址:http://blog.csdn.net/talk_8/article/details/47372969