在传统上我们判断一个整数的奇偶性都是用模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)就是我们得到的快速求余的结论。
分享到:
相关推荐
整数奇偶排序(信息学奥赛一本通-T1181).rar
一种判断奇偶整数Matlab程序实例,已在Matlab验证可行,适合Matlab初学者,分享共同学习。
如果一个函数的图象关于原点对称,那么这个函 数是奇函数。 如果一个函数的图象关于y轴对称, 那么这个函 数是偶函数。
从键盘任意输入一个整数,编程判断它的奇偶性。要求输入变量定义为int类型且由用户从键盘输入。
这是一个输入一个整数,可以进行奇数偶数判断VB小程序。 便于刚学奇数偶数的小学生进行奇偶判断,可以自己做完题后检查是否正确。
VB 奇偶判断函数 VB 奇偶判断函数 VB 奇偶判断函数
信息学奥赛一本通代码1181:整数奇偶排序
奇偶数判断
# 给你一个正整数列表 L, 判断列表内所有数字乘积的最后一个非零数字的奇偶性。如果为奇数输出1,偶数则输出0。 # 输入示例 # 输入:L=[2,8,3,50] # 输出示例 # 输出:0 # 解析 # 在上题的基础上的改造题, 这里直接...
LabVIEW下奇偶数输出源程序,可以判断奇偶数输出,望有用
判断奇偶.py
初学java的小程序,关于奇偶判断的。欢迎下载。免费哦
python 判断输入数字的奇偶性 里面代码涉及 与用户交互,正则表达式判断以及简单的图形绘制 欢迎下载
2021年考研高数函数单调性+奇偶性求法总结.pdf
汇编程序,应该很好用吧,
数据校验技术(CRC,奇偶法) 京华志&精华志出品 希望大家互相学习,互相进步 支持CSDN 支持微软 主要包括C# ASP.NET SQLDBA 源码 毕业设计 开题报告 答辩PPT等等好多知识
支持任意正整数分频,该算法为平均分频,奇偶分频占空比均为50%
C++基础 判断 #include using namespace std; int main() { char ch; ch=getchar(); if(ch%2==0) cout ; else cout ; return 0; }
openjudge1.4编程基础之逻辑表达式与条件分支1.4.3奇偶数判断,c++萌新参考代码
整数拆分整数拆分整数拆分整数拆分整数拆分整数拆分整数拆分整数拆分