一起talk C栗子吧(第三十三回: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次方。


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

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


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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值