Число 222 человек читает не задумываясь – «двести двадцать два». Но приглядимся: цифра «2» стоит в записи три раза, и каждый раз означает разное количество. Крайняя левая – это не «два», а «двести». Никакого правила для этого специально не учат: устройство записи усваивается вместе с самим счётом и потом кажется единственно возможным.
Разминка. Прежде чем читать дальше, посмотрите на число 5005 и ответьте себе: сколько в нём «пятёрок» и одинаковы ли они по значению? А теперь попробуйте объяснить, почему они разные – не примером, а правилом.
В этом уроке: что такое позиционная система счисления, что называют разрядом и основанием, как записать число в развёрнутой форме и почему привычная десятичная запись – лишь один частный случай из множества равноправных.
Разряд и основание
Позиционная система счисления – система записи чисел, в которой значение цифры зависит от её позиции (разряда) в записи числа.
Для контраста – пример непозиционной системы: римские цифры. В записи XX (20) и XXX (30) символ X означает одно и то же число 10 в любой позиции, а величина числа получается сложением значений символов, а не их «весов». Значение здесь задаёт сам символ, а не место, на котором он стоит.
Основание системы счисления – количество различных цифр-символов, которые в ней используются. В десятичной системе это 10 цифр: от 0 до 9.
Ключевая идея позиционной записи: у каждого разряда есть свой «вес» – во сколько раз цифра в этом разряде «весомее» той же цифры в соседнем справа разряде. В десятичной системе этот вес равен основанию, то есть 10.
Десятичная запись в развёрнутом виде
Возьмём число 5305 и распишем, что на самом деле означает каждая цифра:
Развёрнутая форма числа – запись числа в виде суммы произведений его цифр на веса соответствующих разрядов.
Обратите внимание на разряд с цифрой 0: слагаемое $0 \cdot 10^1$ ничего не добавляет к сумме, но и выбросить его из записи нельзя – иначе соседние цифры съедут на разряд вправо и число 5305 превратится в 535. Именно поэтому ноль в позиционной записи – полноценная цифра, а не «пустое место».
Разрядная сетка числа 5305: каждая цифра стоит в своём разряде, вес разряда – соответствующая степень десятки.
Почему именно 10?
Десятичная система – не единственно возможная, а лишь частный случай с основанием 10. Такой выбор объясняется не математикой, а биологией: у человека 10 пальцев на руках, и исторически счёт начинался именно с них.
Позиционная запись с нулём в её современном виде возникла в Индии примерно в V–VII веках и уже оттуда, через труды арабских математиков (в частности, ал-Хорезми, IX век), распространилась в Европу – поэтому привычные нам цифры называют «арабскими», хотя корректнее было бы «индийскими».
Следы других оснований дожили до наших дней: в часе 60 минут, а в минуте 60 секунд – это наследие шестидесятеричной системы древнего Вавилона. Раз правило «вес разряда = основание в степени номера разряда» не привязано к числу 10, оно точно так же сработает для основания 2, 8, 16 или любого другого – просто наборы цифр и сами числа будут выглядеть иначе.
Общая формула для любого основания
Обобщим развёрнутую форму на произвольное основание b. Обозначим цифры числа буквой $a$ с номером разряда: $a_0$ – самая правая цифра, $a_1$ – следующая слева и так далее. Тогда число раскладывается как:
При этом каждая цифра числа может принимать значения от 0 до b − 1 включительно – в десятичной системе (b = 10) это цифры от 0 до 9, а в системе с другим основанием набор цифр будет другим по составу и количеству.
Отсюда полезное следствие: цифра никогда не бывает равна основанию или больше него. Если в записи числа встретилась цифра 7, то основание системы точно больше 7 – иначе такой записи просто не могло бы быть.
Как записывают основание
Пока мы говорили про одну систему за раз, путаницы не возникало. Но дальше в этом блоке одно и то же число будет встречаться сразу в нескольких системах, а запись «101» без уточнений означает три разных числа: сто один в десятичной, пять в двоичной, шестьдесят пять в восьмеричной.
Поэтому основание указывают нижним индексом справа от числа:
Запись
Основание
Значение в десятичной
$101_{10}$
10
101
$101_2$
2
5
$101_8$
8
65
$101_{16}$
16
257
Договорённость: если индекса нет, число считается десятичным. Само основание в индексе всегда пишут десятичным числом – иначе получилась бы бесконечная матрёшка, ведь любое основание в собственной системе записывается одинаково как «10».
Коротко
Позиционная система счисления – та, где значение цифры зависит от её позиции (разряда). Римские цифры – непозиционная система: там значение задаёт сам символ.
Основание – количество различных цифр в системе. Цифры принимают значения от 0 до b − 1, поэтому цифра всегда меньше основания.
Вес разряда – основание в степени номера разряда; разряды нумеруют справа налево, начиная с нуля.
Развёрнутая форма – число как сумма произведений цифр на веса разрядов: $a_0 \cdot b^0 + a_1 \cdot b^1 + \dots$
Ноль в позиционной записи – полноценная цифра: без него соседние разряды съезжают, и 5305 превращается в 535.
Основание указывают нижним индексом $(101_2)$, а число без индекса считается десятичным.
Что нас ждёт в этом блоке
Правило «вес разряда = основание в степени номера разряда» одно на все системы счисления – дальше мы будем применять его к конкретным основаниям и убеждаться, что оно не подводит.
В блоке:
двоичная система и то, почему именно она лежит в основе устройства компьютера (2.2);
восьмеричная и шестнадцатеричная как компактная запись той же двоичной информации (2.3);
перевод в десятичную систему развёрнутой формой – для любого основания (2.4);
перевод из десятичной делением уголком (2.5);
средства Python: bin(), oct(), hex() и int(строка, основание) (2.6).
Каждый урок заканчивается короткой самопроверкой, а весь блок – практикумом: набором задач на код и письменное решение. Именно практикум и считается условием того, что блок пройден.
Проверь себя
Короткие вопросы по теме урока. Попыток сколько угодно, на прохождение блока они не влияют – это проверка для себя.