Checking if a double is a power 2

Tags:



I’m not sure how to check if a double is a power of 2. This is my code so far:

double x = Double.longBitsToDouble(
    Double.doubleToRawLongBits(n) & Double.doubleToRawLongBits(n - 1)
);

I used the following formula to find if the number is a power of 2:

n & (n - 1) == 0

But its not working.

Answer

To deal with big numbers you can use the BigInteger class:

public boolean isPowerOfTwo(BigInteger n) {
    if (n.compareTo(BigInteger.ZERO) <= 0) {
        return false;
    }
    return (n.and(n.subtract(BigInteger.ONE))).equals(BigInteger.ZERO);
}


Source: stackoverflow