В одной из наших статей мы уже подробно рассказали о системах счисления: что это такое, какие они бывают, и зачем тебе эта информация на ЕГЭ.
Сегодня разберемся, как переводить числа в разные СС не вручную, а с помощью программы.
Функция (int)
Позволяет преобразовывать другие типы данных в формат целого числа. Например, ты можешь преобразовать вещественное число или строку в целое число.
Вот как это будет выглядеть в Python:
>>> int (3.65)
3
>>> int (-9.123)
— 9
>>> int («3456»)
3456
Эта функция очень сильно пригодится тебе на экзамене, потому что с помощью нее ты сможешь перевести число из указанной системы счисления в десятичную.
Просто введи int(str, base)
str — передает число в виде строки, base — основание СС.
ВАЖНО:
- аргумент base может быть целым числом в диапазоне от 2 до 36;
- в обратную сторону перевод не работает.
Смотри, как записывается программа:
>>> int (‘110110’, 2)
54
>>> int (‘652’, 7)
331
>>> int(‘fb8’, 16)
4024
Использование питона поможет сэкономить время и избежать ошибок, потому что так тебе не придется переводить числа через разряды: нужно просто ввести информацию в компьютер, а программа все сделает сама.
Но это еще не все! Теперь из десятичной ты можешь перевести число в другие системы счисления. Читай дальше, чтобы узнать как.
Функции bin(), oct(), hex()
Автоматически переводят числа из 10СС в 2СС, 8СС и 16СС:
- bin(num) — преобразует целое число в строку двоичного формата. Форматированная строка имеет префикс «0b».
Пример перевода:
>>> bin (125)
‘0b1111101’
>>> bin ( 125) [2:]
‘1111101’
- oct(num) — преобразует целое число в строку восьмеричного формата с префиксом «0o».
Запись в питоне:
>>> oct (19)
‘0о23’
>>> oct(19) [2:]
’23’
- hex(num) — преобразует целое число в строку шестнадцатеричного формата с префиксом «0x».
Пример записи:
>>> hex(243)
‘0xf3’
>>> hex(243) [2:]
‘f3’
Перевод числа из 10СС в NCC
Напишем программу для перевода чисел из десятичной системы счисления в СС с любым основанием.
Задаем исходное число в 10СС
decimal_number = 255
Указываем СС, в которую исходное число нам нужно перевести (от двоичной системы до шестнадцатеричной)
base = 2
Все возможные варианты цифр
digits = “0123456789ABCDEF”
result = “”
while decimal_number > 0:
Находим остаток от деления исходного числа на основание системы счисления.
Этот остаток и будет следующей цифрой в новом числе (в выбранной системе счисления).
digit = decimal_number % base
Добавляем это число в начало искомого числа.
result = digits[digit] + result
Делим без остатка исходное число. Это обновленное число будет использовано в следующей итерации цикла.
decimal_number //= base
print(result)
Теперь ты знаешь, как пользоваться возможностями Python для перевода чисел в разные СС. А если хочешь получить больше полезных материалов для самостоятельной подготовки к ЕГЭ по информатике, читай другие наши статьи:
Бесплатный вводный урок в школе insperia