Чтобы проверить, является ли число степенью 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 устанавливается только самый левый бит, а все остальные биты не устанавливаются.