Чтобы определить, является ли число степенью 2 в Python, вы можете использовать следующие методы:
Метод 1: побитовое И
Один из способов проверить, является ли число степенью 2, — выполнить побитовую операцию И между числом и его предшественником (числом – 1). Если результат равен нулю, то число представляет собой степень 2.
def is_power_of_two(n):
return n & (n - 1) == 0
Метод 2: Логарифм
Другой подход заключается в использовании логарифмов. Если число является степенью 2, его логарифм по основанию 2 будет целым числом. Мы можем использовать функцию math.log2(), чтобы определить, является ли логарифм целым числом.
import math
def is_power_of_two(n):
return math.log2(n).is_integer()
Метод 3: побитовый сдвиг
Вы также можете использовать оператор побитового сдвига, чтобы проверить, является ли число степенью 2. В степени 2 только один бит будет установлен в 1, поэтому, выполнив побитовый сдвиг, справа, число в конечном итоге станет 1.
def is_power_of_two(n):
return n != 0 and (n & (n - 1)) == 0