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

本文介绍了一种快速判断整数奇偶性的方法,并进一步探讨了利用二进制位运算进行快速求余的技巧。通过分析二进制位的特性,可以简化整数运算,提高程序效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在传统上我们判断一个整数的奇偶性都是用模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)就是我们得到的快速求余的结论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值