Чтобы проверить, является ли число степенью двойки, можно использовать различные методы. Вот некоторые часто используемые подходы:
-
Метод 1 – Побитовое И: Вы можете проверить, является ли число степенью двойки, выполнив побитовую операцию И между числом и его уменьшением (число – 1). Если результат равен нулю, то число представляет собой степень двойки.
Пример кода на Python:
def is_power_of_two(num): return num & (num - 1) == 0 -
Метод 2. Логарифм. Другой способ определить, является ли число степенью двойки, — это логарифмирование числа с основанием 2. Если результатом является целое число, то число является степенью двойки..
Пример кода на Python:
import math def is_power_of_two(num): return math.log2(num).is_integer() -
Метод 3 — Подсчет битов: вы можете подсчитать количество установленных битов (бит со значением 1) в двоичном представлении числа. Если установлен только один бит, то число представляет собой степень двойки.
Пример кода на Python:
def is_power_of_two(num): return bin(num).count('1') == 1 -
Метод 4 – сдвиг битов. Этот метод включает в себя неоднократное смещение числа вправо, пока оно не станет 1. Если после сдвига число становится 1, то оно представляет собой степень двойки.
Пример кода на Python:
def is_power_of_two(num): if num == 0: return False while num != 1: if num % 2 != 0: return False num = num // 2 return True -
Метод 5 — Побитовое исключающее ИЛИ. Выполняя побитовую операцию исключающего ИЛИ между числом и его уменьшением, вы можете проверить, равен ли результат числу плюс его уменьшение. Если это правда, то число представляет собой степень двойки.
Пример кода на Python:
def is_power_of_two(num): return num ^ (num - 1) == num + (num - 1)