Проверьте, является ли число степенью 2 в Python

Чтобы определить, является ли число степенью 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