Java: как проверить, является ли число степенью 2 – методы и примеры

Чтобы проверить, является ли число степенью 2 в Java, вы можете использовать следующие методы:

Метод 1: использование побитового оператора И

public static boolean isPowerOfTwo(int number) {
    if (number <= 0) {
        return false;
    }
    return (number & (number - 1)) == 0;
}

Этот метод работает путем выполнения побитовой операции И между числом и его предшественником (числом – 1). Если результат равен 0, то число является степенью 2.

Метод 2: использование логарифмического свойства

import java.lang.Math;
public static boolean isPowerOfTwo(int number) {
    if (number <= 0) {
        return false;
    }
    double logBase2 = Math.log(number) / Math.log(2);
    return Math.floor(logBase2) == Math.ceil(logBase2);
}

Этот метод проверяет, является ли логарифм числа по основанию 2 целым числом.

Метод 3. Использование битовых манипуляций

public static boolean isPowerOfTwo(int number) {
    if (number <= 0) {
        return false;
    }
    return (number & -number) == number;
}

В этом методе используется тот факт, что для степени 2 устанавливается только самый левый бит, а все остальные биты не устанавливаются.