Здравствуй, дорогой читатель. Сегодня Автор предлагает поговорить о странной вещи: почему число 10 не всегда означает десять. Да, звучит как начало спора с учителем математики, но в мире компьютеров это совершенно нормальная ситуация.
Мы привыкли считать в десятичной системе. Десять пальцев, десять цифр, после 9 идёт 10. Всё уютно.
А компьютер внутри чаще думает нулями и единицами. Программисты иногда пишут FF, и это тоже число. На кассе вам скажут 255 рублей, а в памяти компьютера может лежать 11111111. И всё это может быть одной и той же величиной.
Давайте разбираться без сухой математики. Сначала коробки и жетоны, потом двоичная система, шестнадцатеричная запись и немного честного UPD.
История про коробки с жетонами
Представьте, что Алиса, Илья и Арина играют в магазин. На столе лежат красные жетоны. Каждый жетон — это одна конфета.
Алиса считает привычно:
— Один, два, три, четыре...
Арина пока просто перекладывает жетоны из одной кучки в другую. Технически она уже участвует в вычислениях, просто без лишней теории.
Илья приносит коробки.
— Давайте договоримся, — говорит он. — В одну маленькую коробку помещается только десять жетонов. Как только набралось десять, мы закрываем коробку и ставим её левее. А в текущей кучке снова начинаем считать с нуля.
Алиса смотрит:
- 0 жетонов — пишем 0;
- 1 жетон — 1;
- 9 жетонов — 9;
- добавили ещё один — маленькая кучка обнулилась, а слева появилась одна закрытая коробка.
Получилось 10.
И вот важный момент: 10 здесь не потому, что вселенная так решила. 10 означает: одна коробка десятков и ноль отдельных жетонов.
Это и есть привычная десятичная система счисления.
Что такое система счисления
Если совсем просто, система счисления — это правила, по которым мы записываем количество с помощью символов.
У системы есть два главных элемента:
- Набор цифр. Например, в десятичной системе это 0 1 2 3 4 5 6 7 8 9.
- Основание. Это число, после которого текущий разряд переполняется и переносится в следующий.
В десятичной системе основание — 10. Поэтому после 9 мы не придумываем новую цифру, а пишем 10.
В двоичной системе основание — 2. Там есть только две цифры: 0 и 1. После 1 уже наступает переполнение, поэтому дальше идёт 10.
— Подожди, — говорит Алиса. — То есть в двоичной системе 10 — это не десять?
— Вот тут и начинается интересное, — отвечает Илья.
Почему 10 бывает разным
Вернёмся к коробкам.
В десятичной игре коробка вмещает десять жетонов. Поэтому запись 10 означает:
- 1 коробка по 10;
- 0 отдельных жетонов.
Итого десять.
А теперь Илья меняет правила:
— Представим, что коробка очень маленькая. В неё помещается только два жетона. Как только жетонов стало два, мы закрываем коробку и переносим её левее.
Теперь считаем:
- 0 — ничего;
- 1 — один жетон;
- добавляем ещё один — текущий разряд переполнился;
- пишем 10.
Но теперь 10 означает:
- 1 коробка по 2;
- 0 отдельных жетонов.
Итого два.
Одна и та же запись 10 в разных системах означает разные количества. Поэтому программисты часто уточняют: 10 в десятичной системе, 10 в двоичной системе, 10 в шестнадцатеричной системе.
Число — это количество. Запись числа — это способ это количество показать.
Десятичная система: наш бытовой язык
Десятичная система удобна человеку. Скорее всего, потому что у нас десять пальцев. Исторически люди считали на руках, а потом привычка превратилась в культуру, деньги, документы, цены и школьные тетради.
В десятичной системе каждая позиция справа налево становится в 10 раз тяжелее:
- единицы;
- десятки;
- сотни;
- тысячи.
Число 347 — это не просто три цифры рядом. Это:
- 3 сотни;
- 4 десятка;
- 7 единиц.
То есть 300 + 40 + 7.
Именно поэтому позиция важна. В записи 734 те же цифры, но смысл другой: 7 сотен, 3 десятка, 4 единицы.
Это называется позиционная система счисления. Цифра получает смысл не только сама по себе, но и по месту, где она стоит.
Двоичная система: язык выключателей
Теперь к компьютерам.
Компьютеру неудобно хранить десять разных состояний. Зато ему очень удобно хранить два устойчивых состояния:
- есть сигнал;
- нет сигнала.
Или в более бытовом виде:
- лампочка выключена;
- лампочка включена.
Илья ставит на стол ряд маленьких лампочек.
— Каждая лампочка может быть только в двух состояниях: 0 или 1. Это бит.
Алиса быстро понимает:
- одна лампочка показывает 2 варианта: 0 или 1;
- две лампочки показывают 4 варианта: 00, 01, 10, 11;
- три лампочки показывают 8 вариантов.
Чем больше лампочек, тем больше чисел можно записать.
В двоичной системе разряды тоже становятся тяжелее справа налево, только не в 10 раз, а в 2 раза:
- 1;
- 2;
- 4;
- 8;
- 16;
- 32;
- 64;
- 128.
Например, запись 1010 в двоичной системе означает:
- 1 разряд по 8;
- 0 разрядов по 4;
- 1 разряд по 2;
- 0 разрядов по 1.
Получается 8 + 2 = 10 в десятичной системе.
Вот почему 1010 для компьютера — это просто десять, записанное его удобным способом.
Почему тогда люди не пишут всё двоично
Можно было бы сказать: раз компьютер любит двоичную систему, давайте все будем писать так.
Но, дорогой читатель, попробуйте быстро прочитать:
1101011010110010
Неуютно.
Для машины нормально. Для человека — как смотреть на длинный забор из одинаковых досок и пытаться запомнить, где какая доска стоит.
Поэтому люди придумали более компактные записи. Самая популярная в программировании — шестнадцатеричная система, или hexadecimal.
Шестнадцатеричная система: короткая запись для длинных битов
В шестнадцатеричной системе основание — 16. Но обычных цифр у нас только десять: от 0 до 9. Поэтому для значений от 10 до 15 используют буквы:
- A — десять;
- B — одиннадцать;
- C — двенадцать;
- D — тринадцать;
- E — четырнадцать;
- F — пятнадцать.
Зачем это нужно?
Потому что одна шестнадцатеричная цифра ровно соответствует четырём битам.
Например:
- 1111 в двоичной системе — это F в шестнадцатеричной;
- 1010 — это A;
- 0000 — это 0.
Длинная двоичная запись 11111111 превращается в короткое FF.
А FF — это 255 в десятичной системе.
— То есть 255, 11111111 и FF могут быть одним и тем же количеством? — спрашивает Алиса.
— Да, — говорит Илья. — Просто записаны на разных языках.
Арина в этот момент гордо показывает два одинаковых жетона в разных коробках. И, надо признать, суть она уловила.
Где мы встречаем системы счисления в жизни
Даже если вы не программист, системы счисления вокруг вас встречаются постоянно.
Время
Самый знакомый пример — часы.
Мы не говорим: 10 часов 75 минут. Мы говорим: 11 часов 15 минут. Почему? Потому что минуты живут по правилу: как только набралось 60 минут, они превращаются в один час, а счёт минут снова начинается с нуля.
Это очень похоже на наши коробки с жетонами. Только коробка называется "час", а внутрь помещается 60 минут.
Секунды работают так же: 60 секунд превращаются в одну минуту.
А с часами ещё интереснее. В сутках 24 часа, но на циферблате часто всего 12 делений. Поэтому после 12 снова идёт 1. Это не ошибка часов, а другое правило записи времени.
— То есть когда на часах после 12 снова 1, это как после 9 в десятичной системе появляется 10? — спрашивает Алиса.
— По смыслу да, — отвечает Илья. — Просто основание другое, и запись устроена под удобство людей.
Арина в этот момент переводит игрушечные часы сразу с 3 на 8. С точки зрения точности плохо, с точки зрения иллюстрации — вполне убедительно.
Дюжины, упаковки и коробки
Ещё один бытовой пример — дюжина. Это 12 штук.
Яйца часто продают по 10, 12 или 30. Газировку — упаковками по 6. Бумагу — пачками по 500 листов. Никто не мешает считать всё по одному, но человеку удобнее объединять предметы в группы.
Когда продавец говорит "две упаковки по шесть", он фактически использует идею разрядов: есть крупная единица — упаковка, и есть отдельные штуки.
Если у Алисы 2 коробки по 12 карандашей и ещё 3 карандаша отдельно, то всего у неё 27 карандашей. Но записать ситуацию можно не только как "27", а как "2 дюжины и 3 штуки".
Это не полноценная компьютерная система счисления, но бытовая логика та же: мы выбираем удобный размер коробки и считаем группами.
Календарь и возраст
Календарь тоже не считает всё ровными десятками.
В неделе 7 дней. В месяце может быть 28, 29, 30 или 31 день. В году 12 месяцев. Поэтому дата — это не просто большое количество дней от начала времён, а запись в нескольких "коробках": год, месяц, день.
Например, 12 июня 2026 года — это не одно длинное число, а удобная человеческая запись: годовая коробка, месячная коробка и день внутри месяца.
Компьютер, кстати, часто хранит время иначе: как количество секунд или миллисекунд от выбранной точки отсчёта. А человеку показывает привычную дату. Потому что человеку удобнее жить в календаре, а машине — в числах.
Цвета в вебе
Цвета на сайтах часто записывают в шестнадцатеричном виде:
#FF0000
Это красный. Первые две цифры отвечают за красный канал, следующие две — за зелёный, последние две — за синий.
FF означает максимум. 00 означает минимум. Поэтому #FF0000 — максимум красного, ноль зелёного, ноль синего.
Права доступа
В Linux и других Unix-подобных системах права доступа часто записывают восьмеричными числами: например, 755 или 644.
Там используется основание 8. Для обычного пользователя это может выглядеть странно, но для системы это компактный способ записать набор разрешений: читать, писать, выполнять.
IP-адреса и память
IP-адреса мы обычно пишем десятичными числами через точки: 192.168.1.1. Но внутри это тоже набор битов.
Адреса памяти, коды ошибок, байты файлов, цвета, машинные инструкции — всё это часто удобнее смотреть в шестнадцатеричном виде.
Не потому, что программисты хотят выглядеть загадочно. Хотя иногда хотят. Но главным образом потому, что так короче и меньше шансов потеряться в длинной цепочке нулей и единиц.
Мифы
Миф: двоичная система — это какая-то особая математика для компьютеров.
На самом деле: математика та же. Меняется способ записи. Два плюс два остаётся четырьмя, просто в двоичной системе четыре записывается как 100.
Миф: шестнадцатеричные числа — это шифр.
На самом деле: это не шифр, а удобная запись. Если вы знаете правила, FF читается так же спокойно, как 255.
Миф: десятичная система правильная, остальные искусственные.
На самом деле: десятичная система привычная, а не единственно правильная. Для человека удобны десятки, для электроники — два состояния, для программиста — компактная шестнадцатеричная запись.
Миф: если число записано по-другому, оно стало другим числом.
На самом деле: количество не меняется. Меняется язык записи. Как "дом", "house" и "casa" могут указывать на один и тот же дом.
Итог
Система счисления — это договор о том, какими символами мы записываем количество и когда переносим единицу в следующий разряд.
В десятичной системе текущий разряд переполняется после 9. В двоичной — после 1. В шестнадцатеричной — после F.
Главная мысль простая: число и запись числа — не одно и то же. Количество конфет на столе одно, а записать его можно как 10, 1010 или A — смотря на каком языке счёта мы говорим.
Та же идея живёт в часах, календарях, упаковках и коробках. 60 секунд превращаются в минуту, 12 месяцев — в год, 12 штук — в дюжину. Мы постоянно считаем группами, просто обычно не называем это системами счисления.
Когда вы это понимаете, двоичные числа перестают быть магией. Они становятся обычными коробками с жетонами. Просто коробки маленькие, вмещают только два состояния, зато компьютер с ними работает быстро, надёжно и без лишней философии.
UPD
Автор сознательно оставил за кадром часть деталей, чтобы не превращать статью в школьный конспект.
- Позиционная система — система, где значение цифры зависит от её места. 2 в числе 20 и 2 в числе 200 имеют разный вес.
- Непозиционные системы тоже существуют. Например, римские числа: X, V, I. Там запись устроена иначе, и считать в столбик намного неудобнее.
- Префикс 0b часто используют для двоичных чисел: 0b1010. Префикс 0x — для шестнадцатеричных: 0xFF. Это помогает не путать системы.
- Байт — это 8 бит. Поэтому значения одного байта удобно записывать двумя шестнадцатеричными цифрами: от 00 до FF.
- Отрицательные и дробные числа внутри компьютера записываются отдельными правилами. Там появляются дополнительный код, знак, мантисса, порядок и другие радости, которые лучше разбирать отдельно.
Если после этой статьи вы видите 1010 и не пугаетесь, а спрашиваете "в какой системе?", значит, задача выполнена.