public class Test {public static void main(String[] args) {int num = 10;if (0 == (num & (num - 1))) {//使用与运算判断一个数是否是2的幂次方  System.out.println("success");}else {System.out.println("error");}}
}

解释:

将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。

如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去减去1后的数字进行与运算后会发现为零。

最快速的方法:

(number & number - 1) == 0

原因:因为2的N次方换算是二进制为10……0这样的形式(0除外)。与上自己-1的位数,这们得到结果为0。例如。8的二进制为1000;8-1=7,7的二进制为111。两者相与的结果为0。计算如下:
         1000
     & 0111
        -------
        0000

参考自:

http://blog.csdn.net/hackbuteer1/article/details/6681157

快速判断一个数是否是2的幂次方相关推荐

  1. 快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!

    将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个0就可以了. 如果将这个数减去1后会发现,仅有的那个1会变为 ...

  2. 快速判断一个数是否是4的幂次方,若是,并判断出来是多少次方! .

    将4的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1(1在奇数位置),并且1后面跟了偶数个0: 因此问题可以转化为判断1后面是否跟了偶数个0就可以了. 4的整数次幂的二进制数都为 ...

  3. C语言编程判断是否为2的幂,C语言判断一个数是否是2的幂次方或4的幂次方

    快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个 ...

  4. C语言判断是不是2的幂次方,C语言判断一个数是否是2的幂次方或4的幂次方

    快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方! 将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n ...

  5. 在C语言中如何判断一个数是不是2的幂次方,判断一个数是否为2的幂次方的方法...

    对于如何判断一个数是否为2的幂次方这个问题是很多新手们都好奇的,今天我们就带着这个疑问跟小编去看看判断一个数是否为2的幂次方的方法吧,感兴趣的小伙伴们赶紧收藏起来. 将2的幂次方写成二进制形式后,很容 ...

  6. 如何判断一个数是否为2的幂次方

    最近在OJ上做题,遇到一道题,其中一个细节就是需要判断一个数是否为2的幂次方.初看似乎很简单,可我想来想去,竟然无甚好办法.最后我用一个笨办法解决了,那就是将2 4 8 16 32- -存到一个数组里 ...

  7. 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?

    1.腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 思想:用数组来存这40亿个数,而且只能用bit来表示.why? ...

  8. php判断无理数,如何快速判断一个数的开方是不是无理数?

    引言: 学习完了统计之后,我们开始学习了实数,和我们之前学到了一些有理数,以及对无理数的一些认识进行了简单的回顾后,我们又对实数进行了深一步的探索,并掌握了一种新的运算是乘方的逆运算--开方 最初接触 ...

  9. C++(面试题):给40亿个不重复的无符号整数,没排过序,如何快速判断一个数是否在这40亿个数中

    给40亿个不重复的无符号整数,没排过序,给你一个无符号整数,如何快速判断这个数是否在这40亿个数中? 首先看到这个题第一个想到的就是遍历一遍,看这个数在不在.但是这样的时间复杂度太高了O(N),数据量 ...

最新文章

  1. STRUTS2.X之使用validate方法验证数据
  2. Objective-C之MRC、ARC模式下,属性修饰关键字strong、retain、assign、weak的区别和联系...
  3. 怎么更改sql的实例版本_学会复杂一点的SQL语句:Oracle DDL和DML
  4. harmonyos不用jvm,关于harmonyos:DevEco-Studio-20为跨端应用高效开发设计
  5. mysql8.0其他机器访问_量子公司重大突破,量子机器学习实用化进程加速
  6. hibernate one2one 唯一外键关联(双向关联)
  7. html5对属性布尔的值设定,如何在Javascript中设置HTML5必需属性?
  8. 可视化类激活的热力图
  9. python用什么软件编程-python用什么软件编写
  10. Windows系统更新后,VS2012不能使用的问题
  11. matlab2c使用c++实现matlab函数系列教程-normpdf函数
  12. nlogn 求最长上升子序列 LIS
  13. 金蝶K3案例教程总账后台配置
  14. 2,理论_滑杆_棘轮_间歇运行机构
  15. 关于单点登录的一点想法
  16. bit digger
  17. android-23是什么手机,Android 8.1!首款helio P23/MT6763T手机曝光!
  18. 世界十大骨传导耳机排行榜、实测主流骨传导耳机推荐解析必看榜单
  19. 1082 Read Number in Chinese
  20. 安装的计算机语言不受支持,win10提示安装程序包的语言不受系统支持解决方案...

热门文章

  1. python 判断文件夹或文件是否存在
  2. 报错:MetaException(message:Version information not found in metastore. )
  3. 【模板/经典题型】并查集维护生成树
  4. oracle与raw device
  5. 后“量子霸权”时代你不可错过的几本好书
  6. 20位大佬组团“踢馆”,谁超越了图灵?
  7. 在计算机网络中为了保证正确传输,计算机网络试卷B
  8. java面试题_Java面试题总结(2020年多家公司整理的300道Java面试题手册)
  9. 索要 2.3 亿元赎金!富士康遭遇黑客攻击
  10. IDEA新特性:提前知道代码怎么走!