`

如何判定一个数是2的幂次方

 
阅读更多
一个数是2的幂次方,那么这个数的二进制位数中,只能有一位数值为1.



例如:10000, 100, 1等等。



从中可以看到,如果把这个数减去1,那么结果值的2进制位应该如下:1111,11,0等等。



这两个数的特点是:他们做或的时候,得到的结果是他们的和,例如:



10000和1111的或结果是11111, 100和11的或值是111,1和0的或是1。



所以我们可以如果实现一个方法判断一个数是否是2的幂次方:



Java代码 
public static boolean is2Power(int number){  
    if(number<=0){  
        return false;  
    }  
    return (number|(number-1))==(2*number-1);  


做一个测试:



Java代码 
for(int i = 0;i<1000;i++){  
    if(is2Power(i)){  
        System.out.println(i);  
    }  



得到的结果是:




16 
32 
64 
128 
256 
512 


补充(另一种实现方法):


也可以通过对1的移位来实现。还是上面说的,如果一个数是2的幂,那么它的二进制表示中就只有一位1,所以如果对数1进行移位操作,总会在移到某个位的时候和这个数相等。所以这个实现如下:



Java代码 
public static boolean is2Power(int number){  
    int j = 1;  
    while (number>j) {  
        j<<=1;  
    }  
    return j==number?true:false;  


验证:


Java代码 
for(int i = 0;i<10000;i++){  
    if(is2Power(i)){  
        System.out.println(i);  
    }  

结果:

Java代码 




16 
32 
64 
128 
256 
512 
1024 
2048 
4096 
8192 
分享到:
评论

相关推荐

    rsa.zip_RSA 界面_判定素数_模幂_欧几里得求逆

    在RSA中,需要找到一个数的模逆元,即找到一个数x,使得ax ≡ 1 (mod m),这里a和m是已知的,x就是我们要求的逆元。扩展欧几里得算法可以有效地解决这个问题,它不仅可以找到最大公约数,还能同时给出逆元的解。 4...

    大数计算器(支持大素数判定)

    素数判定是确定一个数是否为素数的过程。常见的方法包括试除法(适用于小数)、米勒-拉宾素性检验(适用于大数)和AKS素性检验(更复杂但理论上总是正确)。大数计算器通常会包含至少一种高效的素性测试算法,以快速...

    初中数学基本概念整理.doc

    2. 数轴:数轴是一个直线,用于可视化表示所有实数。数轴上的每一个点代表一个实数,原点表示0,向右为正数,向左为负数。 3. 相反数:两个数只有符号不同,则互为相反数。例如,5的相反数是-5,-3的相反数是3。 4...

    素数的判断

    2. **幂次分裂**:找到2的幂次s和一个整数r,使得n-1 = 2^s * r,其中r是奇数。这一步可以通过二进制位操作快速完成。 3. **随机选择a**:从2到n-2之间随机选取一个整数a。a的选择不应是n的倍数,以避免误判。 4. ...

    2015后安中学中考数学模拟考试题.doc

    5. 中位数:数据排序后处于中间位置的数值,对于偶数个数据,中位数是中间两个数的平均值。在给定数据中找到中位数。 6. 函数自变量取值范围:了解函数定义域的概念,例如题目中的函数y=1/x,自变量x不能等于0。 8...

    随机算法以及素数生成实验报告附代码

    它基于模幂运算和平方根性质,通过多次随机选取基数,进行模幂次方的计算,来验证一个数是否为素数。在实验中,该算法用于生成一定长度的素数数组,确保生成的素数至少比模式串长度短4位,并不超过200万。 2. **Las...

    福建漳州三中09-10学年八年级上期中考试精选.doc

    14. 实数的估算:第十四题要求估算一个数,需要将数四舍五入到个位数。 15. 正方形的边长:第十五题需要确定正方形的边长,通常可以通过比例关系来计算。 16. 梯形的周长:第十六题给出了等腰梯形的相关角度和边长...

    成人高考高起点数学基本公式与重要知识点.doc

    - **方根**:一个数的n次方等于a,a就是b的n次方根。 - **算术根**:正数a的正n次方根,即a的n次方根,是a的非负的n次方根。 3. **代数式与代数式的值**: - **代数式**:由数、字母以及运算符(加、减、乘、除...

    福州市中考数学试卷及答案2精选.doc

    1. **相反数**:在数学中,a 的相反数是 `-a`,这表示一个数与它的负数相加等于零。在选择题第一题中,选项 C 正确。 2. **平行线判定**:在几何学中,如果两条直线在同一直角坐标系内具有相同的斜率,那么它们是...

    万德中学八年级数学期中试卷精选.doc

    例如,题1中如果已知一个直角三角形的两边长为3和4,那么第三边的平方可能是3²+4²=9+16=25,或者是4²-3²=16-9=7,因此第三边的平方可能为7或25。 2. **直角三角形的判定**:第二题考察了直角三角形的判定方法,...

    二、NOI数学之提高级(2021.09.27).pdf

    这个定理在判定一个数是否为质数时提供了一个方法,同时在数论的其他领域也有应用,比如在解决同余方程或证明某些数学性质时。 这些定理不仅在理论上有重要价值,也是实际问题解决的工具。例如,在求解模幂运算时,...

    湖南省娄底市实验中学2019-2020学年八年级上学期期末数学试题.pdf

    5. 角平分线的构造:利用角尺平分一个角,这是几何中的基本操作,涉及到全等三角形的判定。题目中提到的角尺作法基于SSS(边边边)判定法则。 6. 5G网络与4G网络的速率比较:这是一个实际应用问题,涉及到了比例和...

    重庆市江津区四校2014-2015学年八年级数学上学期第三学月考试试题 新人教版

    21. **解方程**:这是一个含有绝对值和三次方的方程,需要分情况讨论来解。 22. **混合运算**:包括乘方、乘除以及负指数的运算。 这些是试卷中涉及的主要数学概念和技能,涵盖了几何、代数、方程、数论等多个领域...

    眉山市中考数学试卷2精选.doc

    1. **倒数**:在数学中,如果一个数乘以其倒数等于1,那么这个数就是另一个数的倒数。例如,-2的倒数是-\(\frac{1}{2}\),因为-2乘以-\(\frac{1}{2}\)等于1。 2. **代数运算**:题目中的选项涉及到基本的代数运算,...

    宿迁市中考数学试题解析版2精选.doc

    1. 绝对值:在数学中,一个数的绝对值是指不考虑数的符号,只取其大小的值。例如,-2的绝对值是2,因为2是-2去掉负号后的数值。 2. 科学记数法:科学记数法是一种表示数字的方法,尤其是当数值很大或很小的时候。...

    数学经典名题.docx

    按照棋盘的64个格子,每个格子的数量是前一个格子的两倍,我们可以用2的幂来表示每一格的麦粒数量。这实际是一个指数函数,需要计算2的63次方,以了解国王应支付的麦粒总数。 3. **王子的数学题**:这是一个代数...

    无锡市羊尖中学七年级4月月考数学试题及答案精选.doc

    - 题目中提到一个外角和是内角和一半的多边形,设内角和为2S,外角和为S,则2S+S=3S=360°,解得S=120°,所以是六边形。 3. **三角形和直角三角形的性质**: - 第9题涉及直角三角形的判定,给出了多个条件,其中...

    2009华图冲刺班讲义-VIP资料

    - **单数字发散**:即从一个数字出发,思考与其相关的各种特征。 - **多数字联系**:考察考生能否发现数字之间的规律性联系。 - **基础简单数列**:介绍了几种常见的数列形式及其特点。 - **常数数列**:所有项都...

    高一数学基本初等函数部分练习题.doc

    - 第2题涉及对数运算,正确答案D意味着如果一个数的对数等于100,则该数本身等于10的100次方,即10^100。 - 第3题考查了指数与对数的关系,正确答案D揭示了只有当底数相同时,指数的比较才能直接转化为对数值的...

    四川省成都市2020年中考数学模拟卷四含解析202004091171

    1. 实数的性质:第一题涉及实数的相反数概念,强调了相反数的定义,即一个数加上它的相反数等于零。正确答案是D。 2. 几何体的三视图:第二题通过识别几何体的俯视图,测试了学生对空间几何的理解,特别是从不同...

Global site tag (gtag.js) - Google Analytics