您的位置:首页 > 编程语言 > C语言/C++

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

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

休提,言归正转。让我们一起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次方。

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

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

各位看官,关于巧用移位的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: