快速判断一个数是否是2的幂次方
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的幂次方相关推荐
- 快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!
将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个0就可以了. 如果将这个数减去1后会发现,仅有的那个1会变为 ...
- 快速判断一个数是否是4的幂次方,若是,并判断出来是多少次方! .
将4的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1(1在奇数位置),并且1后面跟了偶数个0: 因此问题可以转化为判断1后面是否跟了偶数个0就可以了. 4的整数次幂的二进制数都为 ...
- C语言编程判断是否为2的幂,C语言判断一个数是否是2的幂次方或4的幂次方
快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n个 ...
- C语言判断是不是2的幂次方,C语言判断一个数是否是2的幂次方或4的幂次方
快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方! 将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0: 因此问题可以转化为判断1后面是否跟了n ...
- 在C语言中如何判断一个数是不是2的幂次方,判断一个数是否为2的幂次方的方法...
对于如何判断一个数是否为2的幂次方这个问题是很多新手们都好奇的,今天我们就带着这个疑问跟小编去看看判断一个数是否为2的幂次方的方法吧,感兴趣的小伙伴们赶紧收藏起来. 将2的幂次方写成二进制形式后,很容 ...
- 如何判断一个数是否为2的幂次方
最近在OJ上做题,遇到一道题,其中一个细节就是需要判断一个数是否为2的幂次方.初看似乎很简单,可我想来想去,竟然无甚好办法.最后我用一个笨办法解决了,那就是将2 4 8 16 32- -存到一个数组里 ...
- 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
1.腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中? 思想:用数组来存这40亿个数,而且只能用bit来表示.why? ...
- php判断无理数,如何快速判断一个数的开方是不是无理数?
引言: 学习完了统计之后,我们开始学习了实数,和我们之前学到了一些有理数,以及对无理数的一些认识进行了简单的回顾后,我们又对实数进行了深一步的探索,并掌握了一种新的运算是乘方的逆运算--开方 最初接触 ...
- C++(面试题):给40亿个不重复的无符号整数,没排过序,如何快速判断一个数是否在这40亿个数中
给40亿个不重复的无符号整数,没排过序,给你一个无符号整数,如何快速判断这个数是否在这40亿个数中? 首先看到这个题第一个想到的就是遍历一遍,看这个数在不在.但是这样的时间复杂度太高了O(N),数据量 ...
最新文章
- STRUTS2.X之使用validate方法验证数据
- Objective-C之MRC、ARC模式下,属性修饰关键字strong、retain、assign、weak的区别和联系...
- 怎么更改sql的实例版本_学会复杂一点的SQL语句:Oracle DDL和DML
- harmonyos不用jvm,关于harmonyos:DevEco-Studio-20为跨端应用高效开发设计
- mysql8.0其他机器访问_量子公司重大突破,量子机器学习实用化进程加速
- hibernate one2one 唯一外键关联(双向关联)
- html5对属性布尔的值设定,如何在Javascript中设置HTML5必需属性?
- 可视化类激活的热力图
- python用什么软件编程-python用什么软件编写
- Windows系统更新后,VS2012不能使用的问题
- matlab2c使用c++实现matlab函数系列教程-normpdf函数
- nlogn 求最长上升子序列 LIS
- 金蝶K3案例教程总账后台配置
- 2,理论_滑杆_棘轮_间歇运行机构
- 关于单点登录的一点想法
- bit digger
- android-23是什么手机,Android 8.1!首款helio P23/MT6763T手机曝光!
- 世界十大骨传导耳机排行榜、实测主流骨传导耳机推荐解析必看榜单
- 1082 Read Number in Chinese
- 安装的计算机语言不受支持,win10提示安装程序包的语言不受系统支持解决方案...
热门文章
- python 判断文件夹或文件是否存在
- 报错:MetaException(message:Version information not found in metastore. )
- 【模板/经典题型】并查集维护生成树
- oracle与raw device
- 后“量子霸权”时代你不可错过的几本好书
- 20位大佬组团“踢馆”,谁超越了图灵?
- 在计算机网络中为了保证正确传输,计算机网络试卷B
- java面试题_Java面试题总结(2020年多家公司整理的300道Java面试题手册)
- 索要 2.3 亿元赎金!富士康遭遇黑客攻击
- IDEA新特性:提前知道代码怎么走!