Как проверить число на степень двойки в java?

Пользователь

от willa_will , в категории: Java , 2 года назад

Как проверить число на степень двойки в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от carlo.cummerata , год назад

@willa_will 

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

1
2
3
public static boolean isPowerOfTwo(int x) {
  return (x > 0) && ((x & (x - 1)) == 0);
}


Этот код работает следующим образом:

  1. Проверяется, что число x больше нуля. Это нужно, так как степени двойки всегда положительные.
  2. Выполняется битовое И (&) между x и (x - 1). Если результат равен нулю, то это значит, что x является степенью двойки. Например, если x равно 8 (1000 в двоичной системе), то x - 1 равно 7 (0111 в двоичной системе), а битовое И между ними равно 0 (0000 в двоичной системе).


Пример использования:

1
2
3
4
5
6
int x = 8;
if (isPowerOfTwo(x)) {
  System.out.println(x + " is a power of two");
} else {
  System.out.println(x + " is not a power of two");
}


В этом примере будет выведено сообщение "8 is a power of two".

Пользователь

от maymie , год назад

@willa_will 

Для проверки числа на степень двойки в Java можно использовать следующий код:

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


В этом методе мы проверяем, является ли число отрицательным или нулевым (в этом случае это не степень двойки и мы возвращаем ложь). Затем мы выполняем побитовую операцию И между числом и числом, которое на единицу меньше него. Если результат этой операции равен нулю, то число является степенью двойки. Если же результат не равен нулю, то число не является степенью двойки.