由最快判断整数奇偶法的联想(快速求余)

      在传统上我们判断一个整数的奇偶性都是用模2的方法。此方法准确无误,但不是最快的方法。现在我们讨论整数的二进制存法。

      假设一个数a,它由8个二进制来存储。如下:

           a=a0a1a2a3a4a5a6a7;

          a=2^7*a0+2^6*a1+2^5*a2+2^4*a3+2^3*a4+2^2*a5+2*a6+a7;

我们很容易的发现2^n都是2的倍数。

在对a求模时只剩下a7了,而判断整数的奇偶性我们只需要得到a7这个数就行了。

所以有a%2=a&1.

为运算要比模2运算快得多。

 

接下来我们讨论求一些特殊数的余数的快速方法。

继续看用二进制表示a的方法:

      a=a0a1a2a3a4a5a6a7;

      a=2^7*a0+2^6*a1+2^5*a2+2^4*a3+2^3*a4+2^2*a5+2*a6+a7;

我们也很容易的发现2^n*an是2^m*am(m<n,an,am的取值位0,1)的倍数,所以我们想到求2^m的余数只需要保住二进制中

0--m-1的二进制位。在位与运算中?|0=0,?|1=?(?表示未定数)。

综上我们可以得到快速求余的方法:

                                                a%2^n=a&(2^n-1)  -----(1);

 

式(1)就是我们得到的快速求余的结论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值