例如: 0.5 和 0.25 是 2 的幂,但 0.3 不是,我也知道检查整数是否是 2 的幂很容易,但是如果数字 < 1,如何确定数字是否是 2 的幂?
public bool isPowerOf2(float number){
if(number>1){
//easy to write
}else if(number==1){
return true;
}else{
//hard to write
}
}
最佳答案
试试这个解决方案:
public boolean isPowerOf2(float number){
if(number>1){
//easy to write
}else if(number==1){
return true;
}else if(number>0){
return isPowerOf2(1.0f/number);
}else
return false;
}
顺便说一句,你可以通过检查浮点二进制表示的位来简单地解决这个问题:
public static boolean isPowerOfTwo(float i) {
int bits = Float.floatToIntBits(i);
if((bits & ((1 << 23)-1)) != 0)
return ((bits & (bits-1)) == 0); // denormalized number
int power = bits >>> 23;
return power > 0 && power < 255; // 255 = Infinity; higher values = negative numbers
}
关于java - 如何检查一个数 < 1 是否是 2 的幂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30206831/