java 如何判断一个数是否为2的整数次幂
2017-05-03 20:06
381 查看
当不考虑负数时,对于此题分析可知,当输入值小于1时,此数肯定不是2的整数次幂。
当输入值大于一时,我们可以发现一个规律。2的整数次幂用二进制表示为:
2d = 10b; 4d = 100b; 8d = 1000b
二进制首位为一,其余各位均为零。
所以我们可以通过判断输入值转换为二进制时首位为一,其余各位为0,这样就能保证输入值为2的整数次幂。
但是这样做又过于繁琐,我们可以只判断二进制数中最后一次出现“1"的位置,使用String,lastIndexOf();方法即可。
而且我们还可以发现此规律同样适用于输入1的情况。
那么简洁的代码就这样产生了。
public static boolean isPowerOfTwo(int n) {
String str = Integer.toBinaryString(n);
if(n < 1)
return false;
else if(str.lastIndexOf("1") == 0)
return true;
else
return false;
}
当输入值大于一时,我们可以发现一个规律。2的整数次幂用二进制表示为:
2d = 10b; 4d = 100b; 8d = 1000b
二进制首位为一,其余各位均为零。
所以我们可以通过判断输入值转换为二进制时首位为一,其余各位为0,这样就能保证输入值为2的整数次幂。
但是这样做又过于繁琐,我们可以只判断二进制数中最后一次出现“1"的位置,使用String,lastIndexOf();方法即可。
而且我们还可以发现此规律同样适用于输入1的情况。
那么简洁的代码就这样产生了。
public static boolean isPowerOfTwo(int n) {
String str = Integer.toBinaryString(n);
if(n < 1)
return false;
else if(str.lastIndexOf("1") == 0)
return true;
else
return false;
}
相关文章推荐
- 如何判断一个整数是否是2的整数次幂
- java中如何判断一个数是否为正整数(多种种方式比较有意思)对时间处理也可以
- java 判断一个数是否是2的整数次幂
- java 判断一个数是否为2的整数次幂方法
- JAVA 判断一个整数是否为2的整数次幂的方法
- 如何判断一个整数数组中是否有重复元素?要求时间复杂度O(n),空间复杂度O(1)
- 如何在Shell中判断一个变量是否为整数
- 在 Java 的多线程中,如何去判断给定的一个类是否是线程安全的(另外:synchronized 同步是否就一定能保证该类是线程安全的。)
- 腾讯面试题 腾讯面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
- 判断一个数是否是2的整数次幂,python实现。
- java不使用强制类型转换判断实数是否恰好是一个整数
- JAVA中如何判断一个输入是数字(小数和整数)还是字符串?
- 在 Java 的多线程中,如何去判断给定的一个类是否是线程安全的(另外:synchronized 同步是否就一定能保证该类是线程安全的。)
- 整数的二进制数中1的数目,1-N中1的总共个数,如何判断一个数是否为2的整数次幂.
- 17、判断一个数数不是2的整数次幂 JAVA
- 如何快速判断一个整数是否可以整除另一个整数的理论分析
- 如何判断一个数是否在40亿个整数中
- 给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
- java怎么判断两个Set 里的对象的值是否相同【两个set中的值是否相等】、java treeset和hashset如何判断元素是否相同【即对象是否完全相同;利用一个set去除重复元素】
- 判断一个整数是否为2的整数次幂