- Система счисления — набор знаков и правил, по которым числа записывают и читают.
- В позиционных системах значение цифры зависит от места в записи, в непозиционных — нет.
- Основание позиционной системы равно количеству её цифр: 10, 2, 8 или 16.
- Систему по записи определяют по индексу основания или по префиксу: 101₂, 0b101, 0x1A.
Содержание8 разделов ▾
Система счисления — это набор знаков и правил, по которым числа записывают и читают. Одно и то же количество можно записать по-разному: как 42, как XLII или как 101010₂, и это будет одно число, только в разных системах. Статья для школьников и всех, кто начинает с основ информатики: вы разберётесь, чем позиционные системы отличаются от непозиционных, что такое основание, и научитесь определять систему по записи.
Все расчёты в тексте пересчитаны программой на Python 3.13, а правила записи чисел в самом языке сверены с его документацией (ссылки в источниках). Системы счисления встречаются повсюду: римские цифры на циферблате, десятичные числа в магазине, двоичный код внутри компьютера. К концу статьи вы сможете прочитать запись вроде XVIII, 101₂ или 0x1A, назвать её систему и объяснить, почему компьютер считает не так, как человек. Для этого не нужны ни формулы выше школьной программы, ни опыт программирования: код в статье короткий, его можно просто прочитать. Перевод чисел между системами здесь не разбирается, ему посвящена отдельная инструкция.
Число и цифра
Путаница начинается с трёх слов: цифра, число и система.
Знаков мало, чисел бесконечно много. В десятичной системе всего десять цифр, а из них составляют любые числа: 7, 42, 2026. Правила записи определяют, как из цифр получить число и как его прочитать.
Непозиционные системы
В непозиционной системе значение знака не зависит от того, где он стоит. Самая простая такая система — унарная: каждое число записывают столькими палочками, сколько в нём единиц. Тройка выглядит как |||. Удобно считать пальцы и дни, но число 2026 в такой записи не уместить.
Вторая известная непозиционная система — римская. В ней семь знаков:
| Знак | I | V | X | L | C | D | M |
|---|---|---|---|---|---|---|---|
| Значение | 1 | 5 | 10 | 50 | 100 | 500 | 1000 |
Правила записи такие. Знаки одной величины повторяют не больше трёх раз подряд: XXX — тридцать. Если меньший знак стоит перед большим, его вычитают: IV — четыре, IX — девять, XL — сорок. Если после большого, прибавляют: VI — шесть, XVIII — восемнадцать.
Проверим правила программой. Функция to_roman собирает запись, жадно вычитая самые крупные значения, а from_roman читает её обратно:
ZNAKI = [(1000, "M"), (900, "CM"), (500, "D"), (400, "CD"), (100, "C"), (90, "XC"),
(50, "L"), (40, "XL"), (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I")]
def to_roman(n):
result = ""
for value, sign in ZNAKI:
while n >= value:
result += sign
n -= value
return result
def from_roman(s):
values = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
total = 0
for i, ch in enumerate(s):
if i + 1 < len(s) and values[ch] < values[s[i + 1]]:
total -= values[ch]
else:
total += values[ch]
return total
print(to_roman(18), to_roman(24), to_roman(42))
print(from_roman("MCMXCIV"), to_roman(2026))
print(from_roman("XVIII") + from_roman("XXIV"), to_roman(42))Вывод программы:
XVIII XXIV XLII
1994 MMXXVI
42 XLIIФункция from_roman лишь читает запись и не проверяет, правильно ли она составлена: строка IIII она тоже примет.
Позиционные системы
В позиционной системе значение цифры зависит от её места. В числе 345 цифра 3 стоит на третьем месте справа и означает три сотни, а в 435 она стоит на первом и означает три единицы.
Количество разных цифр системы называют основанием и обозначают . Числа в такой системе раскладываются по формуле:
Здесь — цифры числа, а позиции считают справа налево, начиная с нуля. Для десятичного числа 345 основание равно 10:
Та же формула работает для любого основания. Двоичное число при раскладывается так:
Оба разложения проверены в Python: 3*10**2 + 4*10 + 5 даёт 345, а int("101", 2) даёт 5.
Десятичная, двоичная, восьмеричная, шестнадцатеричная
На практике чаще всего встречаются четыре позиционные системы. Таблицу удобно держать под рукой:
| Система | Основание | Цифры | Где применяется |
|---|---|---|---|
| Десятичная | 10 | 0–9 | повседневные расчёты |
| Двоичная | 2 | 0 и 1 | внутри компьютера, логика |
| Восьмеричная | 8 | 0–7 | краткая запись двоичных чисел |
| Шестнадцатеричная | 16 | 0–9 и A–F | цвета, адреса памяти, коды символов |
Компьютеру подходит двоичная система: у электронного элемента удобно различать два состояния, «есть сигнал» и «нет сигнала». Подробнее об этом написано в отдельной статье про двоичную систему. Восьмеричная и шестнадцатеричная нужны человеку: они записывают длинные двоичные числа коротко. А если нужно перевести число из одной системы в другую, пригодится инструмент на сайте. Для двоичной логики есть таблица истинности.
Как отличить систему по записи
В тетради основание пишут внизу справа: , , , . В языках программирования для этого есть префиксы. В Python двоичные числа начинаются с 0b, восьмеричные с 0o, шестнадцатеричные с 0x, а буквы A–F в шестнадцатеричной записи можно писать в любом регистре. Это следует из документации языка.
print(0b101, 0xFF, 0o17, 0x1A)
print(int("10", 2), int("10", 8), int("10", 16))
print(bin(10))5 255 15 26
2 8 16
0b1010Здесь запись 10 в разных системах означает 2, 8 и 16, а функция bin возвращает двоичную запись числа с префиксом 0b.
Условия и ограничения
- Версия
- Python 3.13 — примеры кода запущены на Python 3.13. Правила записи чисел в этой статье от версии языка не зависят.
- Область
- Целые неотрицательные числа — в статье разобраны только они. Дробные и отрицательные числа в других системах записывают по дополнительным правилам.
- Римская запись
- Числа до 3999 — правило «не больше трёх одинаковых знаков подряд» выполняется для чисел 1–3999; для больших функция
to_romanвыдаст больше трёх M подряд. - Проверка
- from_roman не проверяет запись — функция читает правильные записи, но не отвергает ошибочные вроде IIII.
- Экзамены
- Состав проверяемых тем меняется — перечень элементов в кодификаторе ФИПИ обновляется; сверяйтесь с документом текущего года.
Частые ошибки
- Путают 10₂ и 10: двоичное «10» равно двум, а не десяти.
- Считают позиции слева направо. В формуле разложения позиции нумеруют справа налево, начиная с нуля.
- Читают римскую запись «в столбик», как позиционную: IV — это не 1 и 5, а 5 минус 1.
- Записывают в римской системе четыре одинаковых знака подряд: правильно IV, а не IIII.
- Думают, что основание — число в записи, а не количество цифр системы.
- Забывают, что в шестнадцатеричной системе буквы A–F — полноценные цифры, а не обозначения неизвестных.
Короткий вывод
Система счисления — способ записи чисел, и позиционные системы вытеснили остальные, потому что в них удобно вычислять. Основание показывает, сколько в системе цифр, и в нём разгадка любой записи. Чтобы научиться переводить числа, переходите к статье про перевод между системами, а в двоичной записи разбирайтесь следующей статьёй маршрута.
ПрактикаКак переводить числа между системами счисленияПопробовать на практике →



