- Перевод чисел в Python
- Как перевести число из двоичной системы счисления в десятичную в Python
- Введение в перевод чисел из двоичной системы в десятичную
- Основы двоичной системы счисления
- Математический подход к переводу числа из двоичной системы в десятичную
- Использование встроенных функций Python для перевода чисел
- Функция int()
- Функция eval()
- Функция bin()
- Ручная реализация алгоритма перевода из двоичной системы в десятичную в Python
Перевод чисел в Python
В данной статье мы рассмотрим встроенные функции языка программирования Python по переводу чисел в различные системы счисления. А так же напишем универсальную функцию по переводу десятичных чисел в другие системы счисления.
Перевод чисел из десятичной системы счисления
Для перевода числа из десятичной системы счисления в двоичную можно воспользоваться оператором bin(). В качестве аргумента нужно передать значение в виде числа, а оператор вернет строку с двоичным числом. У результата также будет префикс 0b, указывающий на основание системы счисления.
number = 123 result = bin(number) print(result)
Для перевода в восьмеричную систему счисления есть оператор oct(). Он также возвращает строку с восьмеричным числом и префиксом 0o.
number = 123 result = oct(number) print(result)
При переводе в шестнадцатеричную систему счисления воспользуемся оператором hex(). Он вернет строку шестнадцатеричным числом и префиксом 0x
number = 123 result = hex(number) print(result)
Если же вам не нужен префикс у результата перевода, то всегда можно взять срез у полученной строки.
print(bin(123)[2:]) print(oct(123)[2:]) print(hex(123)[2:])
Так же выводить числа в других системах счисления можно используя f-строки и формат вывода. Для этого в строке, через символ : указываем буквы b – для двоичной, o – для восьмеричной и x – для шестнадцатеричной системы счисления.
n = 1984 print(f'Двоичное: ') print(f'Восьмеричное: ') print(f'Шестнадцатеричное: ')
Двоичное: 11111000000 Восьмеричное: 3700 Шестнадцатеричное: 7c0
А теперь напишем универсальную функцию convert_to() по переводу чисел из десятичной системы счисления в систему счисления в любым основанием. Наша функция будет ограничена только наличием символов в переводимой системе счисления.
Данная функция принимает три аргумента, два из которых обязательные. Это десятичное целое число number и основание переводимой системы счисления base. Третий аргумент upper служит для указания регистра вывода строки переведенного числа. По умолчанию он установлен в значение False.
def convert_to(number, base, upper=False): digits = '0123456789abcdefghijklmnopqrstuvwxyz' if base > len(digits): return None result = '' while number > 0: result = digits[number % base] + result number //= base return result.upper() if upper else result
Во второй строке мы задаем переменную digits, содержащую набор символов цифр и букв английского языка. Она нам понадобится для составления символов переведенного числа на основании остатков.
В третьей строке мы проверяем основание переданной системы счисления на его длину. Если основание окажется больше, чем количество символов в нашей строке digits, то мы прекращаем выполнение функции через вызов оператора return и возвращаем None. Это такая своеобразная защита функции от неправильно переданных аргументов. Если мы попробуем перевести число в большую систему счисления по основанию, чем у нас есть символов для его записи, то мы его не сможем записать.
Дальше заведем переменную result для хранения результата работы функции и зададим ей значение в виде пустой строки. Теперь с помощью цикла с условием будем находить остаток от деления числа number на основание base, а также уменьшать number в base раз используя целочисленное деление.
Остаток от деления числа на основание переводимой системы счисления мы будем использовать как индекс для получения символа в строке digits и добавлять его к результату result. Добавлять это значение следует слева, т.к. самый первый остаток является самым правым разрядом. Цикл выполняется до тех пор, пока исходное значение переменной number больше нуля.
После завершения цикла мы вернем результат через вызов return. Для этого воспользуемся тернарным оператором и проверим наш третий аргумент. Если он будет в значении True, то для строки result вызовем строкой метод .upper() который заменит все прописные символы английского языка на строчные. Иначе, вернем результат как есть.
А теперь проверим работу нашей функции. Для этого попробуем перевести числа в 2ю, 8ю, 16ю, 32ю и 64ю системы счисления. Для перевода в 32ю систему счисления мы укажем третий необязательный аргумент upper и зададим ему значение True.
print(convert_to(123, 2)) print(convert_to(123, 8)) print(convert_to(123, 16)) print(convert_to(123, 32, upper=True)) print(convert_to(123, 64))
Перевод чисел в десятичную систему счисления
Для обратного перевода в десятичную систему счисления мы будем использовать оператор int(). Для этого передадим ему два аргумента, первый – это строка с числом в какой-то системе счисления, а второй – это основание системы счисления самого числа. По умолчанию для этого необязательного аргумента стоит значение равное 10.
В качестве самого числа нужно обязательно передать строку. Строка может содержать или само число или число с префиксом системы счисления.
Для перевода из двоичной системы счисления:
number = '11001' result = int(number, 2) print(result)
number = '0b11001' result = int(number, 2) print(result)
Для перевода из восьмеричной системы счисления:
Как перевести число из двоичной системы счисления в десятичную в Python
Введение в перевод чисел из двоичной системы в десятичную
При работе с числами в программировании часто возникает необходимость переводить числа из одной системы счисления в другую. Одной из наиболее распространенных систем счисления является двоичная система, основанная на использовании только двух цифр: 0 и 1. В то же время, десятичная система счисления, которая является стандартной системой для представления чисел, использует десять цифр: от 0 до 9.
Перевод чисел из двоичной системы в десятичную является важной задачей в программировании, поскольку позволяет нам работать с числами в более удобной форме. В Python существует несколько способов осуществить такой перевод, и в данной статье мы рассмотрим различные методы и подходы.
Перевод чисел из двоичной системы в десятичную основан на позиционной системе счисления, где каждая цифра числа имеет вес, зависящий от ее позиции. При переводе числа из двоичной системы в десятичную, каждая цифра числа умножается на соответствующую степень двойки, а затем суммируется.
В этой статье мы рассмотрим различные методы и алгоритмы, которые помогут вам перевести число из двоичной системы в десятичную в Python. Мы также предоставим практические примеры и поделимся лучшими практиками при работе с такими переводами.
Основы двоичной системы счисления
Двоичная система счисления является системой счисления, основанной на использовании только двух цифр: 0 и 1. Это отличается от десятичной системы, которая использует десять цифр от 0 до 9. В двоичной системе каждая позиция числа имеет вес, который является степенью двойки.
Числа в двоичной системе представляются последовательностью цифр 0 и 1. Каждая цифра в двоичном числе называется битом (от англ. binary digit). Например, двоичное число 1011 состоит из 4 битов. При чтении числа слева направо, каждая позиция имеет увеличивающийся вес: 2 3 , 2 2 , 2 1 и 2 0 .
Математический подход к переводу числа из двоичной системы в десятичную
Перевод числа из двоичной системы в десятичную можно выполнить с использованием математического подхода. Данный подход основан на принципе вычисления значения каждого бита в двоичном числе и их последующей суммировании.
Для перевода числа из двоичной системы в десятичную мы применяем следующий алгоритм:
- Разбиваем двоичное число на отдельные биты, начиная с самого правого бита.
- Для каждого бита определяем его вес, который является степенью двойки, соответствующей позиции бита. Начиная с нулевого бита, вес каждого последующего бита увеличивается вдвое.
- Умножаем значение каждого бита на его вес.
- Суммируем все полученные произведения.
Рассмотрим пример перевода числа 1011 из двоичной системы в десятичную, используя математический подход:
- Разбиваем число на отдельные биты: 1, 0, 1, 1.
- Определяем вес каждого бита: 2 3 , 2 2 , 2 1 , 2 0 .
- Умножаем значение каждого бита на его вес:(1 * 2 3 ) + (0 * 2 2 ) + (1 * 2 1 ) + (1 * 2 0 ) = (1 * 8) + (0 * 4) + (1 * 2) + (1 * 1) = 8 + 0 + 2 + 1 = 11
Таким образом, число 1011 в двоичной системе равно числу 11 в десятичной системе.
Математический подход к переводу числа из двоичной системы в десятичную прост и понятен. Он позволяет выполнять переводы без необходимости использования дополнительных функций или библиотек. Этот метод является основой для других алгоритмов перевода и полезен для понимания внутреннего устройства числовых систем.
Использование встроенных функций Python для перевода чисел
Python предлагает удобные встроенные функции, которые облегчают перевод чисел из двоичной системы в десятичную. Эти функции предоставляют готовые инструменты для выполнения операций перевода без необходимости реализации алгоритмов вручную.
Функция int()
Функция int() может быть использована для перевода числа из двоичной системы в десятичную. Она принимает два аргумента: строку представляющую число в двоичной системе и базу, в которую нужно выполнить перевод. Для перевода в десятичную систему, база устанавливается равной 2. Пример использования функции int() :
binary_number = '1011' decimal_number = int(binary_number, 2) print(decimal_number) # Вывод: 11
Функция int() преобразует строку ‘1011’ в число 11 в десятичной системе.
Функция eval()
Функция eval() может быть также использована для перевода числа из двоичной системы в десятичную. Она вычисляет значение выражения, переданного в виде строки. Пример использования функции eval() :
binary_number = '1011' decimal_number = eval('0b' + binary_number) print(decimal_number) # Вывод: 11
В этом примере мы добавляем префикс ‘0b’ к строке ‘1011’ , чтобы указать, что число представлено в двоичной системе счисления. Функция eval() вычисляет это выражение и возвращает результат, равный 11 в десятичной системе.
Функция bin()
Функция bin() может быть использована для получения двоичного представления числа. Она принимает число в десятичной системе и возвращает его строковое представление в двоичной системе. Пример использования функции bin() :
decimal_number = 11 binary_number = bin(decimal_number) print(binary_number) # Вывод: '0b1011'
Функция bin() преобразует число 11 в его двоичное представление ‘0b1011’ .
Использование этих встроенных функций Python упрощает перевод чисел из двоичной системы в десятичную. Они предоставляют готовые инструменты для выполнения операций перевода и устраняют необходимость реализации алгоритмов вручную.
Ручная реализация алгоритма перевода из двоичной системы в десятичную в Python
Мы можем реализовать алгоритм перевода чисел из двоичной системы в десятичную вручную, без использования функции. Вот пример кода, демонстрирующий эту реализацию:
binary_number = "101010" decimal_number = 0 power = 0 # Проходимся по каждой цифре двоичного числа, начиная с последней for digit in reversed(binary_number): # Конвертируем текущую цифру из строки в число digit = int(digit) # Умножаем текущую цифру на 2 в степени power и добавляем к общему значению decimal_number += digit * (2 ** power) # Увеличиваем степень на 1 для следующей цифры power += 1 print(decimal_number)
В этом примере мы инициализируем переменную decimal_number со значением 0, которая будет использоваться для хранения результата. Также мы инициализируем переменную power со значением 0, которая будет использоваться для отслеживания текущей степени числа 2.
Затем мы проходимся по каждой цифре двоичного числа, начиная с последней, используя цикл for и функцию reversed() , чтобы перебирать цифры в обратном порядке. Внутри цикла мы конвертируем текущую цифру из строки в число с помощью int(digit) . Затем мы умножаем эту цифру на 2 в степени power и добавляем к общему значению decimal_number . После этого мы увеличиваем power на 1 для следующей цифры.
В конце цикла мы выводим значение переменной decimal_number , которое является результатом перевода двоичного числа в десятичную систему.
В данном случае, если мы используем двоичное число ‘101010’ , результатом будет число 42 , которое является десятичным представлением этого двоичного числа.
Таким образом, ручная реализация алгоритма позволяет нам переводить числа из двоичной системы в десятичную, используя позиционную систему счисления и базовые операции языка Python.
Если нам необходимо сначала запрашивать у пользователя двоичное число, а затем выполнять ручной перевод этого числа из двоичной системы в десятичную, то нам необходимо немного изменить код:
binary_number = input("Введите двоичное число: ") decimal_number = 0 power = 0 for digit in reversed(binary_number): digit = int(digit) decimal_number += digit * (2 ** power) power += 1 print("Десятичное представление числа", binary_number, ":", decimal_number)