Что такое непозиционная система счисления

Что такое непозиционная система счисления

Разбираем на примере римской системы

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

Когда мы записываем любое число, например 1998, то пользуемся позиционной системой счисления. Позиционной — это когда значение каждого числа зависит от позиции в цифре. В десятичной, самой привычной нам системе, всё зависит от степени десятки: на какой позиции стоит цифра, в ту степень и возводим 10 и умножаем на это число. Отсчёт идёт с нуля, и работает всё это так:

Что такое непозиционная система счисления

В двоичной системе счисления всё точно так же, но в основании системы уже не 10, а 2:

Что такое непозиционная система счисления

Но есть системы счисления, которые устроены иначе. В них цифра означает всегда одно и то же независимо от того, где она стоит. Это — непозиционные системы счисления.

Римская система счисления — старая и декоративная

Самая известная сегодня непозиционная система счисления — римская. Она пришла к нам из древнего Рима, и в ней вместо цифр используются римские буквы:

I — 1

V — 5

X — 10

L — 50

C — 100

D — 500

M — 1000

Римскую систему счисления сейчас используют в декоративных целях: с её помощью обозначают цифры на часах, указывают в титрах год выпуска фильмов и главы книг:

Что такое непозиционная система счисления
Римские цифры на часах «под старину»
Что такое непозиционная система счисления
Начало шестой (VI) части второй главы первого тома Л. Н. Толстого «Война и мир»

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

Общее правило сейчас такое: 

  • цифры могут повторяться, но не более трёх одинаковых подряд;
  • если меньшая цифра стоит справа от такой же или большей, то они складываются друг с другом: VIII → 8;
  • если меньшая цифра стоит слева от большей — вычитаем из большего меньшее: IV → 4.

Раньше, когда римская система только появилась, то вычитания не было — всё складывали, поэтому 4 записывалось не как IV, а как IIII. В античности всё поменялось, и система пришла к тому, как ей пользуются сейчас. Из-за этого добавились шесть новых комбинаций, которые при расчётах используются как единое целое:

IV = 4

IX = 9

XL = 40

XC = 90

CD = 400

CM = 900

Перевод десятичного числа в римское

Для примера покажем, как перевести число 1998 в римскую систему счисления. Для этого делаем так: 

  1. Берём самое большое римское число и смотрим, наше число больше или нет. 
  2. Если наше больше — вычитаем из нашего римское и записываем его. 
  3. Если не больше — переходим к следующему римскому.
  4. Так делаем до тех пор, пока у нас в остатке не получится ноль.

Итак, делаем всё по шагам:

  1. 1998 и 1000 (M) — самое большое римское число. Наше больше, поэтому отнимаем и добавляем новую букву: M. Остаток — 998
  2. Снова проверяем с самым большим числом — 1000 (M). Наше число меньше, поэтому берём следующее: CM (900). Это уже подходит, поэтому вычитаем его из 998: 998 − 900 = 98. Запоминаем остаток и добавляем CM к нашему числу: MCM
  3. Берём остаток — 98 — и проверяем снова все римские числа сверху вниз. Первое римское число, которое меньше нашего, — это XC (90). Отнимаем, получаем остаток 8 и добавляем XC к нашему числу: MCMXC
  4. Берём остаток — 8 — и смотрим, какое минимальное римское число меньше него, это V (5). Отнимаем пятёрку, получаем 3 и добавляем V к римскому числу: VCVXCV.
  5. Из числа 3 последовательно отнимаем три единицы I (1), и дописываем их к римскому числу: MCMXCVIII.
  6. У нас в остатке 0, а значит, мы закончили с переводом. 1998 = MCMXCVIII.

Зачем сейчас это знать

Непозиционные системы счисления — это не только про красивые записи чисел ради эстетики, но и про алгоритмы их вычисления. А если есть алгоритм, можно написать к нему код и использовать в разных проектах.

Сейчас в математике используются две непозиционные системы счисления — биномиальная система счисления и система остаточных классов. В обеих из них всё зависит от алгоритмов расчёта, и если понимать их отличие от позиционных систем, то работать с ними становится гораздо проще.

Биномиальная система счисления — это когда число представляется в виде суммы биноминальных коэффициентов. Слово «биномиальный» означает, что система основана на биноме Ньютона — способе разложения одних чисел на другие.  

Эта система счисления используется в комбинаторике — с её помощью можно быстро вычислить нужную комбинацию без перебора всех вариантов, которые идут перед ней. А ещё по этому же принципу производят тестирование ПО, контроль качества и анализ проведённой лотереи — находят такие комбинации и сочетания факторов, которые вероятнее всего могли привести к каким-то важным результатам.

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

Что дальше

В следующей статье мы разберём хитрую задачку из собеседования, связанную как раз с римской системой счисления. Такое любят спрашивать при устройстве в разные крупные компании, чтобы оценить кругозор будущего сотрудника.

Код и описание проекта:

LeAnne Chan

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Виталий Вебер

Любите математику? Это для вас
Попробуйте бесплатный тренажер «Основы математики для цифровых профессий». Это все необходимые знания, чтобы закрыть пробелы в математике для айтишника.
Попробовать бесплатно
Любите математику? Это для вас Любите математику? Это для вас Любите математику? Это для вас Любите математику? Это для вас
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
easy