Как определить, является ли число точной степенью двойки в Python?

Чтобы определить, является ли число точной степенью двойки в Python, можно использовать поразрядное логическое И (&) между числом и числом на единицу меньшим, чтобы проверить, является ли оно дробным.

def is_power_of_two(n):
    return n & (n - 1) == 0

number = 16
if is_power_of_two(number):
    print(f"Число {number} является точной степенью двойки")
else:
    print(f"Число {number} не является точной степенью двойки")

Детальный ответ

Как определить, является ли число точной степенью двойки в Python

В программировании часто возникает потребность в определении, является ли число точной степенью двойки. В Python существуют несколько подходов для решения этой задачи. В этой статье мы рассмотрим несколько методов, объясним их использование и предоставим примеры кода.

Метод 1: Проверка через битовую операцию И

Один из способов определить, является ли число точной степенью двойки, заключается в использовании битовой операции И (&) с предыдущим числом (n-1), где n - проверяемое число. Если результат операции равен нулю, это означает, что число является точной степенью двойки.


def is_power_of_two(n):
    return n & (n - 1) == 0

print(is_power_of_two(16))  # Output: True
print(is_power_of_two(17))  # Output: False

В приведенном выше примере функция is_power_of_two принимает число n и возвращает True, если число является точной степенью двойки, и False в противном случае. В первом вызове функции число 16 является точной степенью двойки, поэтому результат будет True. Во втором вызове функции число 17 не является точной степенью двойки, поэтому результат будет False.

Метод 2: Проверка через битовую операцию Сдвиг вправо

Второй метод для определения является ли число точной степенью двойки состоит в использовании битовой операции сдвига вправо (>>) на одну позицию до момента, пока число не станет равным нулю. Если число становится равным нулю, это означает, что исходное число является точной степенью двойки.


def is_power_of_two(n):
    while n > 1:
        n = n >> 1
    return n == 1

print(is_power_of_two(16))  # Output: True
print(is_power_of_two(17))  # Output: False

В приведенном примере функция is_power_of_two начинает сдвигать число вправо на одну позицию до тех пор, пока число больше 1. Если в результате сдвига число становится равным 1, то исходное число является точной степенью двойки и функция вернет True. В противном случае, если число не становится равным 1, то оно не является точной степенью двойки и функция вернет False. В приведенных примерах число 16 является точной степенью двойки, поэтому результат будет True, а число 17 не является точной степенью двойки, поэтому результат будет False.

Метод 3: Проверка через функцию math.log2

Третий метод для определения является ли число точной степенью двойки состоит в использовании функции math.log2 из модуля math. Функция math.log2 возвращает логарифм числа по основанию 2. Если результат логарифма равен целому числу, это означает, что исходное число является точной степенью двойки.


import math

def is_power_of_two(n):
    return math.log2(n).is_integer()

print(is_power_of_two(16))  # Output: True
print(is_power_of_two(17))  # Output: False

В приведенном примере функция is_power_of_two использует функцию math.log2 для вычисления логарифма числа n по основанию 2. Затем функция проверяет, является ли результат логарифма целым числом с помощью метода is_integer. Если результат логарифма является целым числом, то исходное число является точной степенью двойки и функция вернет True. В противном случае, если результат не является целым числом, то исходное число не является точной степенью двойки и функция вернет False. В приведенных примерах число 16 является точной степенью двойки, поэтому результат будет True, а число 17 не является точной степенью двойки, поэтому результат будет False.

Видео по теме

Решение задачи "Это степень двойки?"

Находим степени двойки в python (анонимная функция) #short

Решето Эратосфена - алгоритм определения простых чисел. Решение задачи на Python

Похожие статьи:

🐍 Что обозначает во сне питон? Узнайте значение и толкование 🐍

🔍 Как разделить словарь в Python: идеальное руководство для начинающих 🐍

📂 Как отправить файл с помощью python: простой и быстрый способ

Как определить, является ли число точной степенью двойки в Python?

🔥Что лучше - C# или Python? 💻Детальный сравнительный обзор и рекомендации 2021

🔍 Как вывести содержимое каталога Python: пошаговое руководство

Как ускорить скрипт python? 💨 Советы и трюки для повышения производительности кода