判断一个数是否为2的N次方
来源:互联网 发布:剑网三曹雪阳脸型数据 编辑:程序博客网 时间:2024/05/16 07:30
package AboutMove;//判断是否为2的次方public class AboutMove {public static Boolean Judge(int n){if(n<1)return false;int i=1;while(i<=n){if(i==n)return true;i<<=1;}return false;}public static void main(String[] args) {int n=6;System.out.println(Judge(n));}}
注意点千万不能在第15行写成n>>=1;因为6/2=3;3/2=1这是整形
时间复杂度为O(logn)
算法改进,由于一个数是2的N次方可以转换为这个数对应的二进制表示中是否只有一位为1.如果一个数的二进制表示只有一位是1,例如n=0010000,那么num-1的二进制表示为num-1=0001111,由于num与num-1二进制表示中每一位都不相同,因此num&(num-1)的运算结果为0,可以利用这种方法来判断一个数是否为2的N次方。
改进后代码
public static Boolean ChangeJudge(int n){if(n<1) return false;int m=n&(n-1);return m==0;}public static void main(String[] args) {int n=6;System.out.println(ChangeJudge(n));}
0 0
- 如何判断一个数是否为2的N次方
- 如何判断一个数是否为2的N次方
- 如何判断一个数是否为2的N次方
- 判断一个数是否为2的N次方问题
- 判断一个数是否为2的N次方问题
- 判断一个数是否为2的N次方
- 判断一个数是否为2的n次方
- 判断一个数是否为2的n的次方数,六种方法
- 使用位运算判断一个数是否为2的N次方
- 位运算判断一个数是否为2的n次方
- 面试题 判断一个数是否为2的n 次方
- 【C语言】判断一个数是否为2的n次方
- C语言——不使用循环判断一个数是否为2的N次方
- 判断一个数是否是2的n次方
- 判断一个数(x)是否是2的n次方
- java判断一个数是否是2的N次方
- 判断一个数是否是2的n次方
- 如何判断一个数是否是2的n次方
- 深度神经卷积网络总结
- nginx相关问题的定位方法
- hdu4135 Co-prime(容斥原理两种写法)
- 各种距离的相似性度量
- 组合数学中字典序法C++实现
- 判断一个数是否为2的N次方
- Android几种Service常驻内存的小思路
- 412. Fizz Buzz
- 三十而立
- markdown语法学习笔记
- GDKOI2017总结
- 1191
- 前端筆記
- linux进程间通讯