Python предоставляет удобные инструменты для перевода чисел из одной системы счисления в другую. Давайте рассмотрим несколько способов:
Встроенные функции для распространенных систем счисления
- Двоичная система:Преобразование из десятичной в двоичную:
decimal_number = 10
binary_number = bin(decimal_number)
print(binary_number) # Выведет: 0b1010
Удаление префикса "0b":
binary_number = binary_number[2:]
print(binary_number) # Выведет: 1010
Восьмеричная система:
- Преобразование из десятичной в восьмеричную:
decimal_number = 10
octal_number = oct(decimal_number)
print(octal_number) # Выведет: 0o12
Удаление префикса "0o":
octal_number = octal_number[2:]
print(octal_number) # Выведет: 12
Шестнадцатеричная система:
- Преобразование из десятичной в шестнадцатеричную:
decimal_number = 10
hexadecimal_number = hex(decimal_number)
print(hexadecimal_number) # Выведет: 0xa
Удаление префикса "0x":
hexadecimal_number = hexadecimal_number[2:]
print(hexadecimal_number) # Выведет: a
Перевод в произвольную систему счисления
Для более гибкого перевода в любую систему счисления можно использовать следующий алгоритм:
def to_base(n, b):
"""
Преобразует число n в систему счисления с основанием b.
Args:
n: Число для преобразования.
b: Основание системы счисления.
Returns:
Строка, представляющая число в новой системе счисления.
"""
if n == 0:
return '0'
digits = "0123456789ABCDEF"
result = ""
while n > 0:
result = digits[n % b] + result
n //= b
return result
# Пример использования:
number = 42
base = 16
result = to_base(number, base)
print(result) # Выведет: 2A
Перевод из другой системы счисления в десятичную
Для перевода числа из любой системы счисления в десятичную можно использовать встроенную функцию int():
binary_number = "1010"
decimal_number = int(binary_number, 2) # 2 - основание системы счисления
print(decimal_number) # Выведет: 10
Важные моменты:
- Основания систем счисления: В Python для двоичной, восьмеричной и шестнадцатеричной систем используются префиксы 0b, 0o и 0x соответственно.
- Удаление префиксов: Если вам не нужен префикс, его можно легко удалить с помощью срезов строк.
- Произвольные основания: Функция to_base() позволяет переводить числа в любую систему счисления.
- Ограничения: При преобразовании в системы счисления с основанием больше 36, необходимо использовать другие символы для представления цифр.
Дополнительные возможности:
- Библиотеки: Существуют библиотеки, которые предоставляют более продвинутые функции для работы с числами в различных системах счисления.
- Алгоритмы: Можно реализовать свои собственные алгоритмы для более сложных преобразований.