Как проверить, что число является степенью двойки в Python?
Чтобы проверить, является ли число степенью двойки в Python, мы можем использовать побитовую операцию "И" между числом и его предшествующим числом. Если результат равен нулю и число больше нуля, то число является степенью двойки.
def is_power_of_two(num):
return num & (num - 1) == 0 and num > 0
num = 16
if is_power_of_two(num):
print(f"{num} является степенью двойки")
else:
print(f"{num} не является степенью двойки")
Детальный ответ
Как проверить, что число является степенью двойки в Python
В программировании часто возникает необходимость определить, является ли заданное число степенью двойки. В Python есть несколько способов проверки этого условия. Давайте рассмотрим несколько примеров кода.
1. С использованием битовых операций
def is_power_of_two(n):
if n == 0:
return False
while n != 1:
if n % 2 != 0:
return False
n = n // 2
return True
number = 16
if is_power_of_two(number):
print(f"{number} является степенью двойки.")
else:
print(f"{number} не является степенью двойки.")
В этом примере мы используем битовую операцию «И» (AND) для проверки числа. Если число является степенью двойки, то оно должно иметь только одну единичную битовую запись. В цикле мы делим число на 2 до тех пор, пока оно не станет равным 1. Если в процессе деления число становится нечетным, то оно не является степенью двойки. Если же число после всех делений становится равным 1, то оно является степенью двойки.
2. С использованием функции битового сдвига
def is_power_of_two(n):
if n == 0:
return False
return n & (n - 1) == 0
number = 16
if is_power_of_two(number):
print(f"{number} является степенью двойки.")
else:
print(f"{number} не является степенью двойки.")
В этом примере мы используем битовый сдвиг для проверки числа. Если число является степенью двойки, то при вычитании единицы у него должен получиться ноль. Если это условие выполняется, то число является степенью двойки.
3. С использованием математического свойства
import math
def is_power_of_two(n):
if n <= 0:
return False
return math.log2(n).is_integer()
number = 16
if is_power_of_two(number):
print(f"{number} является степенью двойки.")
else:
print(f"{number} не является степенью двойки.")
В этом примере мы используем математическое свойство степеней двойки. Если логарифм числа по основанию 2 является целым числом, то это число является степенью двойки.
Теперь у вас есть несколько способов проверить, является ли число степенью двойки в Python. Выберите подходящий для вашей задачи и продолжайте программировать!