Преобразование десятичных чисел в двоичные в Python

Преобразовать десятичное число в двоичное в Python очень просто с помощью встроенной функции bin(). В этой статье мы объясним, как это работает, и покажем несколько примеров и приемов.


Преобразование десятичной дроби в двоичную в Python с использованием рекурсивного решения

В этом примере мы напишем конкретную функцию (DecimalToBinary), которая будет реализована для получения частных (входных данных для следующего вызова функции) и остатка (выходного значения), а затем мы будем вызывать ее повторно, пока входное значение не станет больше и равно 1

Код:

#Recursive Function to convert Decimal to Binary

def decimalToBinary(ip_val):
    if ip_val >= 1:
    # recursive function call
        decimalToBinary(ip_val // 2)
    
    # printing remainder from each function call
    print(ip_val % 2, end = '')
 
# Driver Code
if __name__ == '__main__':
    # decimal value
    ip_val = 24
     
    # Calling special function
    decimalToBinary(ip_val)

Выход:

011000

Временная сложность: O(log N) — рекурсивный подход делит десятичное число на 2 в каждом рекурсивном вызове, делая временную сложность логарифмической.

Преобразование десятичных чисел в двоичные в Python с помощью встроенной функции

В Python преобразование десятичного значения в соответствующее ему двоичное представление может быть достигнуто с помощью функции bin(). Эта функция принимает значение в качестве параметра и создает его двоичный эквивалент.

Примечание: bin() возвращает двоичное значение с префиксом 0b, поэтому необходимо выполнить форматирование для удаления 0b в зависимости от варианта использования.

Код:

# Function to convert decimal to binary
# using built-in python function
def decimalToBinary(n):
    # Converting decimal to binary
    # and removing the prefix(0b)
    return bin(n).replace("0b", "")
   
# Driver code
if __name__ == '__main__':
    # calling function
    # with decimal argument
    print(decimalToBinary(77))

Выход:

1001101

Временная сложность: �(1)O(1) — встроенная функция интервала работает в постоянное время.

Десятичное число в двоичное в Python Без встроенной функции

Мы также можем преобразовать десятичное число в двоичное число другим способом, помимо использования встроенной функции Python.

Код:

# Function to convert Decimal to Binary
def decimalToBinary(n):
    return "{0:b}".format(int(n))
# Driver code
if __name__ == '__main__':
    print(decimalToBinary(77))

Выход:

1001101

Временная сложность: �(����)O(logN) — как и рекурсивное решение, ручной метод имеет логарифмическую временную сложность.

Быстрый метод ниндзя

Для тех, кто ищет ускоренный подход к преобразованию десятичных чисел в двоичные в Python, метод Quick Ninja предлагает упрощенное решение. Эта краткая методика идеально подходит для профессионалов, стремящихся к быстрой и эффективной трансформации без ущерба для эффективности.

Код:

# Function to convert Decimal to Binary
def decimalToBinary(n):
    return bin(n)[2:]
# Driver code
if __name__ == '__main__':
    print(decimalToBinary(24))

Выход:

11000

Временная сложность: �(1)O(1) — метод быстрого ниндзя использует bin, имеющая постоянную временную сложность.

Используя оператор побитового сдвига >>

Еще один мощный метод преобразования десятичных чисел в двоичные в Python предполагает умелое использование оператора побитового сдвига >>. Этот оператор позволяет нам сдвигать биты двоичного числа вправо, эффективно разделяя его на 2. Используя это свойство, мы можем итеративно применять операцию сдвига для получения двоичного представления десятичного числа.

Вот краткая реализация с использованием оператора побитового сдвига:

# Function to convert Decimal to Binary
def decimalToBinary(n):
    binary_representation = ''
    while n > 0:
        binary_representation = str(n % 2) + binary_representation
        n = n >> 1
    return binary_representation
    
# Driver code
if __name__ == '__main__':
    print(decimalToBinary(24))

Выход:

11000

В этом коде функция decimalToBinary итеративно добавляет самый правый бит текущего десятичного числа к двоичному представлению. Затем он сдвигает десятичное число вправо с помощью команды >> оператор.

Временная сложность: �(����)O(logN) — оператор побитового сдвига уменьшает десятичное число вдвое на каждой итерации.

Использование встроенного метода форматирования

Метод формата в Python предоставляет гибкие и удобные средства преобразования десятичных чисел в их двоичное представление. Этот метод позволяет точно контролировать форматирование вывода, что делает его ценным инструментом для разработчиков, стремящихся к ясности и настройке своих двоичных представлений.

Вот как вы можете использовать метод формата для преобразования десятичных чисел в двоичные:

# Function to convert Decimal to Binary
def decimalToBinary(n):
    binary_representation = format(n, 'b')
    return binary_representation
    
# Driver code
if __name__ == '__main__':
    print(decimalToBinary(42))

Выход:

101010

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

Временная сложность: O(logN) — подобно ручным методам, метод форматирования имеет логарифмическую временную сложность.

#python 

Преобразование десятичных чисел в двоичные в Python
1.05 GEEK