Позиционные и непозиционные системы счисления
В статье простым языком и с практическими примерами объясняются системы счисления. Основное внимание уделено двум крупным классам: позиционным (значение цифры зависит от её позиции) и непозиционным (значение цифры постоянно, не зависит от позиции) системам.
Что такое система счисления?
Система счисления — это совокупность правил записи и обозначения чисел. Любая система имеет основание (radix, b) и набор цифр. Например, в десятичной системе основание равно 10, а набор цифр — от 0 до 9.
Разница между позиционными и непозиционными
В позиционных системах значение цифры зависит от её разрядной позиции. Например, в числе 507 цифра 5 обозначает сотни, 0 — десятки, 7 — единицы. В непозиционных системах значение цифры не меняется от позиции; числовое значение определяется суммой или правилами комбинации использованных знаков.
Непозиционные системы
- Штриховая (tally) запись:
||||= 4,|||| |||= 7. Каждый штрих равен 1; позиция несущественна. - Римские цифры:
I=1,V=5,X=10,L=50,C=100,D=500,M=1000. Числа формируются правилами сложения (иногда вычитания):VIII = 5+3 = 8,IX = 10−1 = 9,XL = 50−10 = 40. - Древнеегипетская система: запись строится повторением знаков для единиц, десятков, сотен и т.д.; позиция роли не играет.
В непозиционных системах запись больших чисел получается длинной, а арифметические операции (особенно умножение/деление) усложняются.
Позиционные системы
Число трактуется как разложение по степеням основания:
(a_n a_{n-1} ... a_1 a_0)_b = a_n*b^n + a_{n-1}*b^{n-1} + ... + a_1*b + a_0
Условие: 0 ≤ a_i < bЗдесь b — основание системы; например, в десятичной b=10, в двоичной b=2, в шестнадцатеричной b=16. Цифра 0 в позиционных системах играет ключевую роль — это цифра, обозначающая отсутствие разрядной величины и выполняющая функцию заполнителя.
Распространённые позиционные системы- Десятичная (b=10): стандарт в быту, финансах и измерениях.
- Двоичная (b=2): основа работы компьютеров и цифровой электроники (0/1).
- Восьмеричная (b=8) и шестнадцатеричная (b=16): компактная запись групп битов, удобны в программировании.
- Шестеричная (b=6), пятеричная (b=5), двадцатеричная (b=20), шестидесятеричная (b=60): встречаются в разных культурах и практиках (например, 60-ричная — во времени и угловых мерах).
Почему позиционные системы удобнее?
- Компактность записи: то же значение выражается меньшим числом цифр.
- Алгоритмизируемая арифметика: устойчивые процедуры сложения, вычитания, умножения и деления.
- Масштабируемость правил: при смене основания сохраняются общие принципы (разрядный вес, степени основания).
Почему арифметика в непозиционных системах сложнее?
- Суммативный характер записи: значение строится накоплением цифр/знаков; умножение сводится к повторному сложению, что громоздко.
- Субтрактивные правила: конструкции вроде
IV,IXусложняют алгоритмы. - Отсутствие или редкость нуля: нет цифрового «пустого» разряда, труднее унифицировать вычисления.
| Критерий | Позиционные | Непозиционные |
|---|---|---|
| Значение цифры | Зависит от позиции (разрядный вес) | Постоянно, от позиции не зависит |
| Цифра 0 | Ключевая роль | Обычно отсутствует или редка |
| Арифметика | Алгоритмизируема, проще | Сложнее, опирается на набор правил |
| Компактность | Высокая | Низкая |
| Применение | Быт, наука, вычислительная техника | Исторические/ритуальные записи, специальные обозначения |
Рассмотрим несколько примеров:
- Римская → десятичная: MCMLXXXIV = 1000 + (1000−100) + 50 + 10 + 10 + 10 + (5−1) = 1984.
- Двоичная → десятичная: 11001012 = 64 + 32 + 4 + 1 = 10110.
- Десятичная → шестнадцатеричная: 25510 → (FF)16.
- Десятичная → двоичная (дробь): 0.110 ≈ 0.0001100110011…2 (периодическая).
Бонус: типичные ошибки
- Цифры, превышающие основание: в двоичной системе цифры 2 и 3недопустимы и т.п.
- Раннее прекращение перевода дробей: заранее задавайте число шагов и требуемую точность, чтобы контролировать погрешность.
- Злоупотребление субтракцией в римской записи: IL (49) — некорректно, стандартная форма — XLIX.
Непозиционные системы интересны с историко-культурной точки зрения, но в современной науке и технике позиционные системы объективно удобнее. Их сильные стороны — разрядный (позиционный) вес, наличие цифры 0 и алгоритмизируемая арифметика. Знание методов перевода между основаниями упрощает повседневную работу в программировании и инженерии.