Системы счисления для ЕГЭ по информатике: описание, виды, способы перевода

от автора

Обложка статьи

Единый государственный экзамен по информатике проверяет не только базовые знания из школьной программы по этому предмету, но и твои навыки программирования, работы с электронными таблицами, а также умение работать с разными системами счисления (СС).

Для того чтобы точно справиться с заданиями экзамена, в которых проверяется этот навык, важно разобраться в особенностях различных систем — двоичной, восьмеричной, шестнадцатеричной и т. д., освоить методы ручного и программного перевода + понять, как разные CC связаны между собой.

Не хотим хвастаться, но этому всему мы учим на курсе подготовки к ЕГЭ по информатике — почитай, если стало интересно 🙂

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

Что это такое

1 апельсин, 2 стула, 3 ручки — цифры во всех этих примерах просты и понятны для нас. Но почему в двоичной CC вместо 1, 2 и 3 появляются совсем другие значения — 1, 10 и 11?

Цифры, которые мы используем почти каждый день, составляют десятичную систему. Название говорит само за себя: она основана на числе 10. Это значит, что для записи чисел мы используем десять цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9. Когда мы доходим до 9, следующая цифра добавляется слева, а правая обнуляется: так получается 10 (добавили единичку слева + обнулили 9), затем 11, 12 и так далее.

Но десятичная система — это лишь один из способов записывать числа. В других СС основание может быть меньше или больше 10. Например:

  • В двоичной CC основание — 2. Тут используются только цифры 0 и 1. Например, число 10₂ в двоичной системе означает 2 в десятичной: 1 * 21 + 0 * 20 = 2.
  • В восьмеричной CC основание — 8, поэтому цифры идут от 0 до 7. Так, 17₈ в восьмеричной системе означает 15 в десятичной: 1 * 8 + 7 = 15.
  • В шестнадцатеричной CC основание — 16. Здесь, кроме цифр от 0 до 9, вместо чисел 10–15 используются буквы A, B, C, D, E и F. Так, 1F₁₆ в этой системе равно числу 31 в десятичной CC: 1 * 16 + 15 = 31.

Почему эти системы отличаются от десятичной? Все дело в том, что разные СС нужны для решения разных задач. Например, двоичная «удобна» для компьютеров, так как они работают только с двумя электрическими сигналами: включено (1) или выключено (0). А шестнадцатеричная помогает проще записывать большие числа, которые часто встречаются в программировании.

Каждая система счисления — это некий уникальный язык для записи чисел. Компьютеры умеют «переводить» эти языки самостоятельно, но для ЕГЭ по информатике важно уметь делать это самостоятельно.

Десятичная система счисления

Как мы уже упомянули ранее, системы отличаются друг от друга основанием, то есть количеством цифр, используемых для записи чисел. Так, десятеричная CC (основание 10) оперирует цифрами от 0 до 9, а двоичная (основание 2) — только 0 и 1.

Для перевода из десятичной системы в другую используют деление на основание новой системы счисления с записью остатков.

Алгоритм перевода из десятичной СС (10СС) в любую другую (NCC)

  1. Делим заданное число на N в столбик, высчитываем остаток, обводим его в кружок
  2. Получившееся частное снова делим на N. Продолжаем деление, пока не получим число меньше N.
  3. Проверяем обведенные остатки, включая последнее частное (они все должны быть меньше N), и записываем их справа налево.

Обратный процесс — перевод из любой системы в десятичную — осуществляется путем умножения цифр числа на соответствующие степени основания.

Алгоритм перевода из любой СС (NCC) в десятичную (10CC)

  1. Записываем заданное число
  2. Расставляем под каждой его цифрой разряды справа налево, начиная с 0
  3. Берем первую цифру, умножаем ее на основание СС (N) в степени разряда
  4. Проделываем так с каждой цифрой
  5. Полученные числа складываем
  6. Получаем десятичное число

Двоичная система счисления

Двоичная система часто кажется самой странной и непонятной тем, кто только начинает готовиться к экзамену.
Давай разберем самые важные ее особенности — так должно стать менее страшно.
Во-первых, каждая цифра, 0 и 1, в 2СС называется битом, от английского binary digit — ‘двоичная цифра’. Например, число 1011₂ состоит из четырёх битов. Каждый бит может находиться в одном из двух состояний — «включено» или «выключено».
Во-вторых, для записи больших чисел в 2СС требуется больше разрядов, чем в десятичной, поскольку цифры в ней всего две. Сравни: в десятичной число 13 записывается как 13 (два разряда — десятки и единицы), а в двоичной — как 1101₂ (здесь уже есть четыре разряда).
Наконец, числа из двоичной CC легко переводить в системы счисления, основанные на степенях двойки: в четверичную, восьмеричную и шестнадцатеричную. Каждая группа битов напрямую соответствует одной цифре в этих системах:

  • 1 четверичный разряд — это 2 бита: 11₂ = 3₄.
  • 1 восьмеричный разряд — это 3 бита: 110₂ = 6₈.
  • 1 шестнадцатеричный разряд — это 4 бита: 1111₂ = F₁₆.

Взаимосвязь разных систем счисления

Мы не зря упомянули, что числа из двоичной CC достаточно легко переводить в другие системы. Однако это правило применимо не только к ней. На самом деле столь же легко переводить числа в/из всех систем, основанных на степенях двойки.

Такая связь между этими СС строится на группировке битов, например:

  1. 1101₂ = 31₄ — 4 бита исходного числа сгруппировали по два, получили 2 разряда
  2. 110101₂ = 65₈ — 6 битов сгруппировали по три, получили тоже 2 разряда
  3. 11010101₂ = D5₁₆ — 8 битов сгруппировали по четыре, снова получили 2 разряда

Перевод между разными системами на Python 

Алгоритм перевода из 10СС в NCC и из NCC в 10CC не отличается от ручного, но реализуется программой.

Например, перевод из 10СС в NCC можно выполнить таким образом:

chislo10 = 12345 # исходное число
chisloN = " # искомое число
N = 5 # основание сс
while chislo10 > 0:
    chisloN = str(chislo10 % 5) + chisloN
    chislo 10 // = N
print(chisloN)

Перевод из NCC в 10СС можно осуществить так:

chisloN = '343340' # исходное число
chislo10 = 0 # искомое число
N = 5 # основание сс
l = len(chisloN) - 1
for i in chisloN:
    chislo10 += int(i) * N**l
    l -= 1
print(chislo10)

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

Мы рассказываем про них здесь: [название статьи] 

Итоги

Какими бы страшными не казались системы счисления на первый взгляд, на самом деле перевод чисел в них – одна из самых простых тем на ЕГЭ (понимание которой, в то же время, поможет тебе заработать приличное количество первичных баллов).

Тренируешься переводить «на руках» + учишься делать это с помощью (любого на твой выбор) языка программирования = круто сдаешь ЕГЭ по информатике!

    Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь с политикой конфиденциальности.