# Системы счисления

Информатика · 8 класс · Системы счисления
Источник: https://razlozheno.ru/subject/informatika/8/1-sistemy-schisleniya

Как из двух состояний — «есть ток» / «нет тока» — получаются любые числа. Разбираемся, что такое система счисления, чем позиционные системы отличаются от непозиционных, как устроены двоичная, восьмеричная, шестнадцатеричная и римская системы и как переводить числа между ними и десятичной.

## Чему научишься

- Различать позиционные и непозиционные системы счисления, находить основание и алфавит любой системы
- Переводить целые числа от 0 до 1024 между десятичной, двоичной, восьмеричной и шестнадцатеричной системами счисления
- Складывать двоичные числа и сравнивать числа, записанные в разных системах счисления

## С чего начать

Компьютер не умеет писать цифры от 0 до 9 — он различает только «ток есть» и «тока нет», то есть всего два состояния. Как из этих двух состояний получаются вообще любые числа?

## 1. Позиционные и непозиционные системы счисления

*Алфавит, основание и развёрнутая форма записи*

Открой калькулятор и набери $19$ — привычная запись, «девятнадцать». А теперь взгляни на $10011$. Это то же самое число — девятнадцать, — просто записанное по другим правилам, через нолики и единички. Правила, по которым знаки складываются в число, и есть то, что мы сейчас разберём.

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

Представь систему счисления как набор правил дорожного движения для чисел: знаки — это «дорожные знаки», а правила говорят, как из них собрать нужное значение. Мнемоническая зацепка: система счисления — это «система счёта», то есть правила записи чисел.

Знаки, которыми записывают числа, называются цифрами, а их полный набор — алфавитом системы счисления. В привычной нам системе алфавит — это десять цифр: от $0$ до $9$.

Знаки, с помощью которых записываются числа, называются цифрами, а их совокупность — алфавитом системы счисления.

В любой системе счисления цифры служат для обозначения чисел, называемых узловыми; остальные числа (алгоритмические) получаются в результате каких-либо операций из узловых чисел.

Самая древняя и самая простая система счисления вообще обходится без разных цифр — в ней один-единственный символ.

Простейшая и самая древняя система — унарная система счисления: для записи любых чисел используется всего один символ (палочка, узелок, зарубка, камушек); также называется системой бирок.

В унарной системе каждая палочка «весит» одинаково: где её ни поставь, она всё равно значит $1$. А вот в записи $300$ тройка стоит не $3$, а $300$ — её значение зависит от того, на каком она месте. Это ключевое различие.

Система счисления называется непозиционной, если количественный эквивалент (количественное значение) цифры не зависит от её положения (позиции) в записи числа.

Представь набор одинаковых жетонов: какой бы жетон ни оказался в ряду, он всегда означает одну и ту же единицу. Мнемоническая зацепка: в непозиционной системе «позиция не важна» — место цифры не меняет её значение.

Система счисления называется позиционной, если количественный эквивалент цифры зависит от её положения (позиции) в записи числа.

Представь шкаф с ящиками единиц, десятков и сотен: одна и та же цифра получает разный вес в зависимости от ящика. Мнемоническая зацепка: в позиционной системе «позиция важна» — место цифры меняет её значение.

**Неправильно:** Основание системы счисления — это самая большая цифра в её алфавите
**Правильно:** Основание — это количество цифр в алфавите: в десятичной системе цифры $0$–$9$, всего десять цифр, поэтому основание — $10$, а не $9$.

Основание позиционной системы счисления равно количеству цифр, составляющих её алфавит.

Основанием позиционной системы счисления может служить любое натуральное число $q > 1$. Алфавитом позиционной системы счисления с основанием $q$ служат числа $0, 1, \ldots, q-1$, каждое из которых может быть записано с помощью одного уникального символа; младшей цифрой всегда является $0$.

**Развёрнутая форма записи числа (1)**

$A_q = \pm(a_{n-1}\cdot q^{n-1} + a_{n-2}\cdot q^{n-2} + \ldots + a_0\cdot q^0)$ — где $A$ — само число, $q$ — основание системы счисления, $a_i$ — цифры из алфавита, $n$ — количество разрядов, а $q^i$ — «вес» $i$-го разряда.

Представь кошелёк с разрядами: тысячи, сотни, десятки, единицы. Одна и та же цифра «весит» по-разному в зависимости от места — тройка в разряде сотен стоит $300$, а в разряде единиц — всего $3$. Формула (1) — это и есть сумма таких «весов»: каждая цифра умножается на основание в степени своего разряда. Способ запомнить: считай разряды справа налево, начиная с нулевого — самый правый разряд всегда имеет вес $q^0$, то есть равен просто самой цифре.

Запись числа по формуле (1) называется развёрнутой формой записи.

Свёрнутой формой записи числа называется его представление в виде $\pm a_{n-1}a_{n-2}\ldots a_1a_0$.

В римской системе счисления используются непозиционные знаки: $I=1$, $V=5$, $X=10$, $L=50$, $C=100$, $D=500$, $M=1000$. Узловые числа обозначаются отдельными знаками, а остальные получают сложением или вычитанием соседних значений.

Римская система счисления — непозиционная система, в которой числа записываются знаками $I$, $V$, $X$, $L$, $C$, $D$, $M$, имеющими значения $1$, $5$, $10$, $50$, $100$, $500$, $1000$.

**Сложение и вычитание в римской системе**

Если меньший знак стоит после большего, его значение прибавляется: $VI=5+1=6$. Если меньший знак стоит перед большим, его значение вычитается: $IV=5-1=4$. Поэтому $XIV=10+5-1=14$, а $XIX=10+10-1=19$.

Представь римские знаки как старинные жетоны разного достоинства: жетон справа от более крупного добавляет стоимость, а жетон слева перед ним отнимает. Мнемоническая зацепка: «слева от большего — минус, справа — плюс».

**Проверь себя:** В числе $234$ — сколько «весит» цифра $3$ в этой записи?
**Ответ:** $3 \cdot 10^1 = 30$ — она стоит в разряде десятков.

### Проверь себя

**Как называется совокупность знаков, используемых для записи чисел в конкретной системе счисления?**
- Алфавит — верно
- Разрядность
- Базис
- Основание
> Согласно определению в источнике, совокупность цифр (знаков) называется алфавитом системы счисления.

**В чем заключается основное отличие непозиционной системы счисления от позиционной?**
- В ней всегда используется только один символ
- В ней нельзя записывать дробные числа
- Количественное значение цифры не зависит от её позиции в записи числа — верно
- Она использует только буквы латинского алфавита
> В непозиционных системах вес знака фиксирован и не меняется от того, где он стоит.

**Как называются числа в системе счисления, которые служат для обозначения самих цифр?**
- Натуральные
- Алгоритмические
- Позиционные
- Узловые — верно
> По тексту, узловые числа обозначаются цифрами, а остальные называются алгоритмическими.

**Какое минимальное натуральное число может быть основанием позиционной системы счисления?**
- $q = 2$ — верно
- $q = 0$
- $q = 1$
- $q = 10$
> В источнике указано, что основанием может служить любое натуральное число $q > 1$, следовательно, минимум — 2.

**Что такое «развёрнутая форма записи числа»?**
- Запись числа с указанием его основания внизу
- Представление числа в виде последовательности остатков от деления
- Представление числа в виде суммы произведений цифр на веса разрядов — верно
- Запись числа в системе счисления с основанием $10$
> Это соответствует формуле $A_q = \pm(a_{n-1} \cdot q^{n-1} + \dots + a_0 \cdot q^0)$, приведенной в параграфе.

## 2. Двоичная система счисления

*Как компьютер считает всего двумя цифрами*

У электронной схемы нет способа надёжно различить десять разных уровней сигнала — зато отличить «есть ток» от «нет тока» она может почти без ошибок. Поэтому компьютерам подходит система, где всего две цифры.

Двоичной системой счисления называется позиционная система счисления с основанием 2. Для записи чисел используются только две цифры: 0 и 1.

Представь обычный выключатель света: либо горит, либо нет — третьего не дано, только два состояния. В двоичной системе то же самое: на каждом месте может стоять только $0$ или $1$. Готовая зацепка: двоичная система счисления — «двое»: в алфавите всего две цифры, $0$ и $1$.

**Развёрнутая форма для двоичного числа (1')**

$a_{n-1}a_{n-2}\ldots a_1a_0 = a_{n-1}\cdot 2^{n-1} + a_{n-2}\cdot 2^{n-2} + \ldots + a_0\cdot 2^0$ — та же формула (1), но $q=2$.

**Пример: Переводим двоичное число в десятичное**

1. Берём число $10011_2$ и подписываем вес каждого разряда справа налево: $2^0, 2^1, 2^2, 2^3, 2^4$
2. Умножаем каждую цифру на её вес: $1\cdot2^4 + 0\cdot2^3 + 0\cdot2^2 + 1\cdot2^1 + 1\cdot2^0$
3. Нулевые слагаемые пропадают: $2^4 + 2^1 + 2^0$
4. Складываем: $16 + 2 + 1 = 19$
5. Ответ: $10011_2 = 19_{10}$

**Перевод десятичного числа в систему с основанием $q$**

1) последовательно делить число и получаемые целые частные на основание новой системы счисления до частного, равного нулю; 2) полученные остатки привести в соответствие с алфавитом новой системы счисления; 3) составить число в новой системе счисления, записывая его начиная с последнего полученного остатка.

**Пример: Переводим десятичное число в двоичное**

1. Берём $11_{10}$ и делим на $2$: $11 : 2 = 5$, остаток $1$
2. Делим частное $5$ на $2$: $5 : 2 = 2$, остаток $1$
3. Делим частное $2$ на $2$: $2 : 2 = 1$, остаток $0$
4. Делим частное $1$ на $2$: $1 : 2 = 0$, остаток $1$ — частное стало нулём, останавливаемся
5. Читаем остатки снизу вверх: $1, 0, 1, 1$
6. Ответ: $11_{10} = 1011_2$

**Неправильно:** $10_2$ — это число «десять»
**Правильно:** $10_2 = 1\cdot2^1 + 0\cdot2^0 = 2_{10}$ — индекс внизу указывает основание, и это не «десять», а «два».

**Проверь себя:** К числу $111_2$ прибавили единицу. Что получится, если рассуждать так же, как $999+1=1000$?
**Ответ:** $1000_2$ — перенос происходит во все разряды сразу, ровно как в десятичной системе при переходе через $999$.

### Проверь себя

**Чему равен десятичный эквивалент двоичного числа $10011_2$?**
- $35_{10}$
- $19_{10}$ — верно
- $17_{10}$
- $11_{10}$
> Расчет: $1 \cdot 2^4 + 0 \cdot 2^3 + 0 \cdot 2^2 + 1 \cdot 2^1 + 1 \cdot 2^0 = 16 + 2 + 1 = 19$.

**Какое из преимуществ двоичной системы счисления является ключевым для компьютерной техники?**
- Надёжность и помехоустойчивость представления данных двумя состояниями — верно
- Отсутствие необходимости в математическом аппарате
- Удобство восприятия кодов человеком
- Компактность записи чисел по сравнению с другими системами
> Источник прямо указывает, что техническая реализация двух устойчивых состояний наиболее надежна.

## 3. Восьмеричная и шестнадцатеричная системы

*Зачем нужны ещё системы и как переводить между ними*

Запись двоичного числа быстро становится длинной и неудобной для чтения человеком. Чтобы сократить запись, придумали системы с основанием $8$ и $16$ — они тесно связаны с двоичной.

Восьмеричной системой счисления называется позиционная система счисления с основанием 8. Для записи чисел используются цифры: 0, 1, 2, 3, 4, 5, 6, 7.

Представь, что в двоичном коде цифры собрали в тройки, как слова разбивают на слоги — так читать проще. Готовая зацепка: восьмеричная система счисления — восемь цифр: от $0$ до $7$.

**Развёрнутая форма для восьмеричного числа (1'')**

$a_{n-1}a_{n-2}\ldots a_1a_0 = a_{n-1}\cdot 8^{n-1} + a_{n-2}\cdot 8^{n-2} + \ldots + a_0\cdot 8^0$ — та же формула (1), но $q=8$.

**Пример: Переводим восьмеричное число в десятичное**

1. Берём $1063_8$ и подписываем веса разрядов: $8^3, 8^2, 8^1, 8^0$
2. Умножаем: $1\cdot8^3 + 0\cdot8^2 + 6\cdot8^1 + 3\cdot8^0$
3. Считаем: $512 + 0 + 48 + 3$
4. Ответ: $1063_8 = 563_{10}$

Шестнадцатеричная система счисления: основание $q=16$, алфавит $0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F$. Для цифр с десятичными эквивалентами $10$–$15$ используются первые пять букв латинского алфавита.

Как только цифр $0$–$9$ не хватает, в ход идут буквы — $A$ значит $10$, $B$ — $11$ и так далее до $F$, что равно $15$. Готовая зацепка: шестнадцатеричная система счисления — шестнадцать знаков: $0$–$9$ и $A$–$F$.

**Пример: Переводим шестнадцатеричное число в десятичное**

1. Берём $3AF_{16}$; помним, что $A=10$, $F=15$
2. Подписываем веса: $16^2, 16^1, 16^0$
3. Умножаем: $3\cdot16^2 + 10\cdot16^1 + 15\cdot16^0$
4. Считаем: $768 + 160 + 15$
5. Ответ: $3AF_{16} = 943_{10}$

**Пример: Переводим десятичное число в восьмеричное и шестнадцатеричное**

1. Тот же способ деления с остатком, что и для двоичной, но делим на $8$ или на $16$
2. $103_{10}$: делим на $8$ раз за разом, читаем остатки снизу вверх — получаем $147_8$
3. Для $154_{10}$ первое деление: $154 : 16 = 9$, остаток $10$, то есть $A$
4. Делим полученное частное: $9 : 16 = 0$, остаток $9$; частное стало нулём, останавливаемся
5. Читаем остатки снизу вверх: $9$, затем $A$ — получаем $9A_{16}$

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

**Пример: Группируем биты: из двоичной в восьмеричную и шестнадцатеричную**

1. Берём уже знакомое число $10011_2 = 19_{10}$
2. Для перевода в восьмеричную разбиваем на группы по 3 бита справа налево, при нехватке дополняем нулями слева: $010\ 011$
3. Каждую тройку переводим в одну восьмеричную цифру: $010 = 2$, $011 = 3$ — получаем $23_8$
4. Проверка: $23_8 = 2\cdot8 + 3 = 19_{10}$ — совпадает
5. Для перевода в шестнадцатеричную разбиваем на группы по 4 бита: $0001\ 0011$
6. Каждая четвёрка — одна шестнадцатеричная цифра: $0001 = 1$, $0011 = 3$ — получаем $13_{16}$
7. Проверка: $13_{16} = 1\cdot16 + 3 = 19_{10}$ — совпадает

**Пример: Переводим из восьмеричной и шестнадцатеричной в двоичную**

1. Каждую восьмеричную цифру заменяем трёхбитовой группой: $23_8 = 010\ 011_2 = 10011_2$; начальный ноль можно убрать
2. Каждую шестнадцатеричную цифру заменяем четырёхбитовой группой: $13_{16} = 0001\ 0011_2 = 10011_2$; начальные нули можно убрать
3. Правило: одна цифра в системе с основанием $8$ соответствует трём битам, а одна цифра в системе с основанием $16$ — четырём битам

**Пример: Переводим шестнадцатеричное число в восьмеричное и обратно**

1. Переводим $2F_{16}$ в двоичную: $2F_{16} = 0010\ 1111_2 = 101111_2$
2. Группируем двоичную запись по 3 бита справа налево: $101\ 111_2$ — получаем $57_8$
3. Для обратного перевода $57_8$ заменяем цифры группами: $5=101$, $7=111$, поэтому $57_8 = 101111_2 = 2F_{16}$

**Проверь себя:** Что больше: $101_2$ или $6_8$?
**Ответ:** $101_2 = 5_{10}$, а $6_8 = 6_{10}$ — значит $6_8$ больше. Проще всего сравнивать числа из разных систем, переведя оба в десятичную.

### Проверь себя

**Какое из утверждений о представлении цифр в шестнадцатеричной системе счисления верно?**
- Алфавит состоит только из букв $A, B, C, D, E, F$
- Основание системы равно $15$
- Буква $A$ соответствует десятичному числу $1$
- Для цифр от $10$ до $15$ используются буквы латинского алфавита от $A$ до $F$ — верно
> Поскольку стандартных арабских цифр только десять, для значений выше 9 используются буквы.

**Для чего в программировании используют восьмеричную и шестнадцатеричную системы?**
- Потому что компьютер обрабатывает данные напрямую в этих системах
- Это единственные системы, поддерживающие буквы в алфавите
- Для выполнения арифметических операций быстрее, чем в двоичной системе
- Для сокращения длины двоичных кодов при их анализе специалистами — верно
> Источник поясняет, что они позволяют сократить запись в 3 и 4 раза соответственно, делая её удобнее для человека.

## 4. Арифметика в двоичной системе и сравнение чисел

*Складываем, умножаем и сравниваем без ошибок*

В двоичной системе всего две цифры, поэтому сложение устроено даже проще, чем в десятичной, — надо запомнить всего одно правило переноса.

**Правило двоичного сложения**

$1 + 1 = 10_2$: в младший разряд пишем $0$, а единица переносится в старший разряд.

Это работает точно как в десятичной системе при переходе через десяток: $9 + 1 = 10$ — пишем $0$, единицу переносим влево. В двоичной «десяток» наступает уже после $1+1$, а не после $9+1$. Способ запомнить: если при сложении цифр в столбик получилась сумма $2$ (то есть $1+1$) — пиши $0$ и неси единицу дальше, как обычный перенос через разряд.

**Пример: Складываем двоичные числа**

1. Складываем $101_2$ и $11_2$ в столбик, выравнивая по правому краю: $101 + 011$
2. Младший разряд: $1+1=10_2$ — пишем $0$, переносим $1$
3. Следующий разряд: $0+1+1(\text{перенос})=10_2$ — пишем $0$, переносим $1$
4. Следующий разряд: $1+0+1(\text{перенос})=10_2$ — пишем $0$, переносим $1$
5. Старший разряд: только перенос $1$ — пишем $1$
6. Ответ: $101_2 + 11_2 = 1000_2$

Умножение ещё проще: $0\cdot0=0$, $0\cdot1=0$, $1\cdot1=1$ — то есть результат ненулевой только там, где обе цифры — единицы.

**Пример: Умножаем двоичные числа**

1. Умножаем $11_2$ на $10_2$
2. По разрядам множителя $10_2$: на месте $0$ — строка нулей, на месте $1$ (со сдвигом на один разряд влево) — сама строка $11_2$
3. Складываем строки со сдвигом: $110_2$
4. Ответ: $11_2 \cdot 10_2 = 110_2$ (проверка в десятичной: $3\cdot2=6$, а $110_2 = 6_{10}$ — совпадает)

**Почему именно двоичная система в технике**

В компьютерной технике используется двоичная система счисления: двоичные числа представляются с помощью технических элементов с двумя устойчивыми состояниями; представление посредством двух состояний надёжно и помехоустойчиво; двоичная арифметика наиболее проста; существует математический аппарат для логических преобразований двоичных данных. Восьмеричная и шестнадцатеричная системы применяются для сокращённой (в три и четыре раза соответственно) записи двоичных кодов.

**Проверь себя:** Не считая точно: число, у которого в двоичной записи 10 разрядов, — оно больше или меньше тысячи?
**Ответ:** Однозначно определить нельзя: 10-разрядные двоичные числа лежат в диапазоне от $1000000000_2 = 512_{10}$ до $1111111111_2 = 1023_{10}$, поэтому конкретное число может быть меньше или больше тысячи. Самое маленькое 11-разрядное двоичное число равно $10000000000_2 = 1024_{10}$.

### Проверь себя

**Чему равен результат сложения $1_2 + 1_2$ в двоичной системе счисления?**
- $10_2$ — верно
- $11_2$
- $2_2$
- $1_2$
> В двоичной системе $1+1=2$, но так как цифры 2 нет, происходит перенос в следующий разряд, давая 10.

## Ключевые термины

- **Система счисления** — Знаковая система, определяющая правила записи чисел.
- **Алфавит системы счисления** — Совокупность знаков (цифр), с помощью которых записываются числа.
- **Основание** — Количество цифр в алфавите позиционной системы счисления.
- **Непозиционная система** — Система, в которой количественный эквивалент цифры не зависит от её позиции в записи числа.
- **Позиционная система** — Система, в которой количественный эквивалент цифры зависит от её позиции в записи числа.
- **Развёрнутая форма** — Запись числа как суммы цифр, умноженных на веса разрядов: $A_q=a_{n-1}q^{n-1}+\ldots+a_0q^0$.
- **Свёрнутая форма** — Обычная запись числа подряд идущими цифрами: $\pm a_{n-1}a_{n-2}\ldots a_1a_0$.
- **Двоичная система** — Позиционная система с основанием 2, использует цифры 0 и 1.
- **Восьмеричная система** — Позиционная система с основанием 8, использует цифры 0–7.
- **Шестнадцатеричная система** — Позиционная система с основанием 16, использует цифры 0–9 и буквы A–F.

## Итог

- Позиционная система — значение цифры зависит от её места в записи; непозиционная — нет
- Основание $q$ — это число цифр в алфавите: $2$ у двоичной, $8$ у восьмеричной, $16$ у шестнадцатеричной
- Любое число раскладывается по весам разрядов: $A_q = a_{n-1}q^{n-1} + \ldots + a_0q^0$
- Перевод в десятичную — подставить веса разрядов и сложить; перевод из десятичной — делить на основание и собрать остатки снизу вверх
- В двоичном сложении $1+1=10_2$ — перенос в старший разряд, точно как $9+1=10$ в десятичной

## Шпаргалка

### Формулы

- **$A_q=a_{n-1}q^{n-1}+\ldots+a_0q^0$** — сумма цифр на веса разрядов — перевод в десятичную
- **$1+1=10_2$** — перенос единицы в следующий разряд

### Алфавиты систем

- **Двоичная ($q=2$)** — цифры 0, 1
- **Восьмеричная ($q=8$)** — цифры 0–7
- **Шестнадцатеричная ($q=16$)** — цифры 0–9, A–F (10–15)

### Перевод из десятичной в систему с основанием $q$

1. **1** — делим число на $q$, запоминаем остаток
2. **2** — делим получившееся частное на $q$ снова
3. **3** — повторяем, пока частное не станет 0; остатки снизу вверх — ответ

### Три системы рядом

|  | Двоичная | Восьмеричная | Шестнадцатеричная |
| --- | --- | --- | --- |
| Основание | 2 | 8 | 16 |
| Цифр в алфавите | 2 | 8 | 16 |
| 1 цифра заменяет | 1 бит | 3 бита | 4 бита |

## Любопытное

- Компьютеры считают в двоичной системе не потому, что так удобнее людям, а потому что электронным схемам проще надёжно различать только два состояния — «есть ток» и «нет тока»: так меньше шансов на ошибку из-за помех.
- Восьмеричную и шестнадцатеричную системы придумали не для процессора, а для человека: одна восьмеричная цифра заменяет ровно три двоичных, а шестнадцатеричная — четыре, поэтому длинный двоичный код читается втрое-вчетверо короче.
- Самая старая система счисления в мире — унарная: одна палочка, один узелок, один камешек — один и тот же принцип счёта, независимо изобретённый задолго до появления привычных цифр.
