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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от carlo.cummerata , 5 месяцев назад

@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".