Добавить в корзинуПозвонить
Найти в Дзене
IT - это просто

Что такое системы счисления? Простыми словами

Здравствуй, дорогой читатель. Сегодня Автор предлагает поговорить о странной вещи: почему число 10 не всегда означает десять. Да, звучит как начало спора с учителем математики, но в мире компьютеров это совершенно нормальная ситуация. Мы привыкли считать в десятичной системе. Десять пальцев, десять цифр, после 9 идёт 10. Всё уютно. А компьютер внутри чаще думает нулями и единицами. Программисты иногда пишут FF, и это тоже число. На кассе вам скажут 255 рублей, а в памяти компьютера может лежать 11111111. И всё это может быть одной и той же величиной. Давайте разбираться без сухой математики. Сначала коробки и жетоны, потом двоичная система, шестнадцатеричная запись и немного честного UPD. Представьте, что Алиса, Илья и Арина играют в магазин. На столе лежат красные жетоны. Каждый жетон — это одна конфета. Алиса считает привычно: — Один, два, три, четыре... Арина пока просто перекладывает жетоны из одной кучки в другую. Технически она уже участвует в вычислениях, просто без лишней теори
Оглавление

Здравствуй, дорогой читатель. Сегодня Автор предлагает поговорить о странной вещи: почему число 10 не всегда означает десять. Да, звучит как начало спора с учителем математики, но в мире компьютеров это совершенно нормальная ситуация.

Мы привыкли считать в десятичной системе. Десять пальцев, десять цифр, после 9 идёт 10. Всё уютно.

А компьютер внутри чаще думает нулями и единицами. Программисты иногда пишут FF, и это тоже число. На кассе вам скажут 255 рублей, а в памяти компьютера может лежать 11111111. И всё это может быть одной и той же величиной.

Давайте разбираться без сухой математики. Сначала коробки и жетоны, потом двоичная система, шестнадцатеричная запись и немного честного UPD.

Одна и та же величина может быть записана разными способами.
Одна и та же величина может быть записана разными способами.

История про коробки с жетонами

Представьте, что Алиса, Илья и Арина играют в магазин. На столе лежат красные жетоны. Каждый жетон — это одна конфета.

Алиса считает привычно:

— Один, два, три, четыре...

Арина пока просто перекладывает жетоны из одной кучки в другую. Технически она уже участвует в вычислениях, просто без лишней теории.

Илья приносит коробки.

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

Алиса смотрит:

  • 0 жетонов — пишем 0;
  • 1 жетон — 1;
  • 9 жетонов — 9;
  • добавили ещё один — маленькая кучка обнулилась, а слева появилась одна закрытая коробка.

Получилось 10.

И вот важный момент: 10 здесь не потому, что вселенная так решила. 10 означает: одна коробка десятков и ноль отдельных жетонов.

Это и есть привычная десятичная система счисления.

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

Если совсем просто, система счисления — это правила, по которым мы записываем количество с помощью символов.

У системы есть два главных элемента:

  1. Набор цифр. Например, в десятичной системе это 0 1 2 3 4 5 6 7 8 9.
  2. Основание. Это число, после которого текущий разряд переполняется и переносится в следующий.

В десятичной системе основание — 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 для компьютера — это просто десять, записанное его удобным способом.

Двоичная запись 1010 — это 8 плюс 2.
Двоичная запись 1010 — это 8 плюс 2.

Почему тогда люди не пишут всё двоично

Можно было бы сказать: раз компьютер любит двоичную систему, давайте все будем писать так.

Но, дорогой читатель, попробуйте быстро прочитать:

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. С точки зрения точности плохо, с точки зрения иллюстрации — вполне убедительно.

Время тоже считает не только десятками: 60 секунд, 60 минут, 24 часа.
Время тоже считает не только десятками: 60 секунд, 60 минут, 24 часа.

Дюжины, упаковки и коробки

Ещё один бытовой пример — дюжина. Это 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 и не пугаетесь, а спрашиваете "в какой системе?", значит, задача выполнена.