Преобразуйте десятичные целые числа в их двоичные эквиваленты, используя метод Деление на 2 и структуру данных Стек.

Нам часто нужно преобразовать десятичные числа в двоичные. Для этой цели в Python есть встроенная функция bin. Но в этом уроке мы не будем использовать эту функцию. Вместо этого мы будем использовать метод Деление на 2 и структуру данных Стек для преобразования десятичных целых чисел в их двоичные эквиваленты.

Что такое метод деления на 2?

Любое десятичное число, деленное на 2, всегда оставляет в остатке 0 или 1. Таким образом, двоичный эквивалент десятичного числа представляет собой строку из нулей и единиц, полученную путем многократного деления на 2.

Предположим, нам требуется преобразовать десятичное целое число D в двоичное. При делении D на 2 мы получим частное D1 и остаток r1, значение которого может быть либо 0, либо 1.

т. е. D = 2 * D1 + r1, где D1 — частное, а r1 — остаток (0 или 1).

Например, у нас есть десятичное число 56. Посмотрим, как работает метод.

Теперь, чтобы получить двоичный эквивалент, нам нужно прочитать остатки от старшего бита до наименее значимого бита. Следовательно, за 56 получаем 111000.

Давайте закодируем это!

Теперь давайте закодируем наше решение. Для реализации метода деления на 2 воспользуемся структурой данных Stack. Если вы новичок в этом, сначала пройдите это руководство.

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

from stack import Stack
def convert_decimal_to_binary(decimal_integer):
    stack = Stack()
while decimal_integer > 0:
        remainder = decimal_integer % 2
        stack.push(remainder)
        decimal_integer = decimal_integer // 2
binary_number = ""
    while not stack.is_empty():
        binary_number += str(stack.pop())
return binary_number
if __name__ == "__main__":
    print(convert_decimal_to_binary(10))
    print(convert_decimal_to_binary(56))
    print(int(convert_decimal_to_binary(256), 2) == 256)

В функции convert_decimal_to_binary мы сначала создаем пустой стек. Теперь в строках 7-10 мы получаем остаток с помощью оператора по модулю и помещаем его в стек. Далее делим число на 2, чтобы получить частное и присваиваем его той же переменной. Далее в строке 12 мы объявляем пустую строку binary_number. Затем мы выполняем цикл while, пока стек не станет пустым. В цикле мы извлекаем самый верхний элемент и добавляем его к строке binary_number. Как только стек становится пустым, цикл завершается. binary_number возвращается в строке 16.

В основной функции мы тестируем нашу реализацию функции.

Заключение

В этой статье мы узнали, как преобразовать десятичные целые числа в двоичные без использования какой-либо встроенной функции. Для этого мы использовали структуру данных Stack и метод деления на 2. Надеюсь, урок был для вас достаточно понятен.

Спасибо за прочтение!

Первоначально опубликовано на https://ireadblog.com.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Посетите наш Community Discord и присоединитесь к нашему Коллективу талантов.