Что такое система счисления;
Системы счисления в информатике
Системы счисления — это одна из базовых тем школьной информатики. Она нужна для понимания того, как компьютер хранит числа, текст, изображения и другую информацию.
Кратко о теме
В этой статье разберём:
- что такое система счисления;
- что такое основание системы счисления;
- какие системы чаще всего встречаются в информатике;
- как переводить числа из одной системы в другую;
- как решать типичные школьные задачи;
- как проверить ответ с помощью Python.
Что такое система счисления
Система счисления — это способ записи чисел с помощью определённых символов.
Например, мы привыкли записывать числа так:
$$ 125,\ 348,\ 2026 $$
Это числа в десятичной системе счисления.
Она называется десятичной, потому что в ней используется 10 цифр:
$$ 0,\ 1,\ 2,\ 3,\ 4,\ 5,\ 6,\ 7,\ 8,\ 9 $$
Основание системы счисления
Основание системы счисления показывает, сколько разных цифр используется для записи чисел.
Например:
| Система счисления | Основание | Используемые цифры |
|---|---|---|
| Двоичная | 2 | 0, 1 |
| Восьмеричная | 8 | 0, 1, 2, 3, 4, 5, 6, 7 |
| Десятичная | 10 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 |
| Шестнадцатеричная | 16 | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F |
Как записывают систему счисления
Чтобы не перепутать, в какой системе записано число, основание пишут справа снизу.
Например:
$$ 1011_2 $$
Это число записано в двоичной системе счисления.
$$ 57_8 $$
Это число записано в восьмеричной системе счисления.
$$ 245_{10} $$
Это число записано в десятичной системе счисления.
$$ 2A_{16} $$
Это число записано в шестнадцатеричной системе счисления.
Почему компьютеры используют двоичную систему
Компьютеру удобно работать только с двумя состояниями:
| Состояние | Значение |
|---|---|
| сигнала нет | 0 |
| сигнал есть | 1 |
Поэтому внутри компьютера вся информация хранится в виде нулей и единиц.
Например:
101010001101
На первый взгляд это просто набор цифр, но для компьютера это может быть:
- число;
- буква;
- цвет пикселя;
- команда программы;
- часть изображения;
- звук.
Десятичная система счисления
Десятичная система — это привычная нам система счисления.
Например, число:
$$ 347 $$
можно представить так:
$$ 347 = 3 \cdot 100 + 4 \cdot 10 + 7 \cdot 1 $$
Или через степени числа 10:
$$ 347 = 3 \cdot 10^2 + 4 \cdot 10^1 + 7 \cdot 10^0 $$
Разряды в десятичной системе
| Разряд | Степень | Значение |
|---|---|---|
| единицы | $10^0$ | 1 |
| десятки | $10^1$ | 10 |
| сотни | $10^2$ | 100 |
| тысячи | $10^3$ | 1000 |
Например:
$$ 5284 = 5 \cdot 10^3 + 2 \cdot 10^2 + 8 \cdot 10^1 + 4 \cdot 10^0 $$
Считаем:
$$ 5284 = 5000 + 200 + 80 + 4 $$
Двоичная система счисления
Двоичная система счисления имеет основание 2.
В ней используются только две цифры:
$$ 0 \text{ и } 1 $$
Примеры двоичных чисел:
$$ 101_2 $$
$$ 1101_2 $$
$$ 10010_2 $$
Степени двойки
Для работы с двоичной системой нужно знать степени числа 2.
| Степень | Значение |
|---|---|
| $2^0$ | 1 |
| $2^1$ | 2 |
| $2^2$ | 4 |
| $2^3$ | 8 |
| $2^4$ | 16 |
| $2^5$ | 32 |
| $2^6$ | 64 |
| $2^7$ | 128 |
| $2^8$ | 256 |
| $2^9$ | 512 |
| $2^{10}$ | 1024 |
Перевод из двоичной системы в десятичную
Чтобы перевести число из двоичной системы в десятичную, нужно разложить его по степеням двойки.
Алгоритм
- Подписываем степени двойки справа налево.
- Умножаем каждую цифру числа на соответствующую степень двойки.
- Складываем полученные значения.
Пример 1
Переведём число:
$$ 1011_2 $$
в десятичную систему.
Подписываем степени справа налево:
| Цифра | Степень двойки | Значение |
|---|---|---|
| 1 | $2^3$ | 8 |
| 0 | $2^2$ | 0 |
| 1 | $2^1$ | 2 |
| 1 | $2^0$ | 1 |
Получаем:
$$ 1011_2 = 1 \cdot 2^3 + 0 \cdot 2^2 + 1 \cdot 2^1 + 1 \cdot 2^0 $$
$$ 1011_2 = 8 + 0 + 2 + 1 $$
$$ 1011_2 = 11_{10} $$
Ответ:
$$ 1011_2 = 11_{10} $$
Пример 2
Переведём число:
$$ 1101_2 $$
в десятичную систему.
Расписываем:
$$ 1101_2 = 1 \cdot 2^3 + 1 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0 $$
Считаем:
$$ 1101_2 = 8 + 4 + 0 + 1 $$
$$ 1101_2 = 13_{10} $$
Ответ:
$$ 1101_2 = 13_{10} $$
Пример 3
Переведём число:
$$ 10010_2 $$
в десятичную систему.
Расписываем:
$$ 10010_2 = 1 \cdot 2^4 + 0 \cdot 2^3 + 0 \cdot 2^2 + 1 \cdot 2^1 + 0 \cdot 2^0 $$
Считаем:
$$ 10010_2 = 16 + 0 + 0 + 2 + 0 $$
$$ 10010_2 = 18_{10} $$
Ответ:
$$ 10010_2 = 18_{10} $$
Перевод из десятичной системы в двоичную
Чтобы перевести число из десятичной системы в двоичную, нужно делить число на 2 и записывать остатки.
Алгоритм
- Делим число на 2.
- Записываем остаток от деления.
- Полученное частное снова делим на 2.
- Повторяем, пока частное не станет равно 0.
- Остатки записываем снизу вверх.
Пример 1
Переведём число:
$$ 13_{10} $$
в двоичную систему.
| Деление | Остаток |
|---|---|
| 13 : 2 = 6 | 1 |
| 6 : 2 = 3 | 0 |
| 3 : 2 = 1 | 1 |
| 1 : 2 = 0 | 1 |
Теперь записываем остатки снизу вверх:
1 1 0 1
Получаем:
$$ 13_{10} = 1101_2 $$
Ответ:
$$ 13_{10} = 1101_2 $$
Пример 2
Переведём число:
$$ 25_{10} $$
в двоичную систему.
| Деление | Остаток |
|---|---|
| 25 : 2 = 12 | 1 |
| 12 : 2 = 6 | 0 |
| 6 : 2 = 3 | 0 |
| 3 : 2 = 1 | 1 |
| 1 : 2 = 0 | 1 |
Записываем остатки снизу вверх:
1 1 0 0 1
Получаем:
$$ 25_{10} = 11001_2 $$
Ответ:
$$ 25_{10} = 11001_2 $$
Восьмеричная система счисления
Восьмеричная система счисления имеет основание 8.
В ней используются цифры:
$$ 0,\ 1,\ 2,\ 3,\ 4,\ 5,\ 6,\ 7 $$
Важно:
В восьмеричной системе нет цифры 8.
Например:
$$ 127_8 $$
это правильная запись.
А вот:
$$ 128_8 $$
это неправильная запись, потому что цифры 8 в восьмеричной системе нет.
Перевод из восьмеричной системы в десятичную
Принцип такой же: раскладываем число по степеням основания.
Только основание теперь не 2, а 8.
Пример
Переведём число:
$$ 57_8 $$
в десятичную систему.
Расписываем:
$$ 57_8 = 5 \cdot 8^1 + 7 \cdot 8^0 $$
Считаем:
$$ 57_8 = 5 \cdot 8 + 7 \cdot 1 $$
$$ 57_8 = 40 + 7 $$
$$ 57_8 = 47_{10} $$
Ответ:
$$ 57_8 = 47_{10} $$
Шестнадцатеричная система счисления
Шестнадцатеричная система счисления имеет основание 16.
В ней используются 16 символов:
$$ 0,\ 1,\ 2,\ 3,\ 4,\ 5,\ 6,\ 7,\ 8,\ 9,\ A,\ B,\ C,\ D,\ E,\ F $$
Буквы нужны, потому что обычных цифр от 0 до 9 не хватает.
Значения букв
| Символ | Значение |
|---|---|
| A | 10 |
| B | 11 |
| C | 12 |
| D | 13 |
| E | 14 |
| F | 15 |
Пример
Переведём число:
$$ 2A_{16} $$
в десятичную систему.
Буква A означает 10.
Расписываем:
$$ 2A_{16} = 2 \cdot 16^1 + A \cdot 16^0 $$
Подставляем значение буквы A:
$$ 2A_{16} = 2 \cdot 16 + 10 \cdot 1 $$
Считаем:
$$ 2A_{16} = 32 + 10 $$
$$ 2A_{16} = 42_{10} $$
Ответ:
$$ 2A_{16} = 42_{10} $$
Быстрый перевод между двоичной и восьмеричной системами
Восьмеричная система связана с двоичной.
Так как:
$$ 8 = 2^3 $$
то одна восьмеричная цифра заменяется на 3 двоичных разряда.
Таблица соответствия
| Восьмеричная цифра | Двоичная запись |
|---|---|
| 0 | 000 |
| 1 | 001 |
| 2 | 010 |
| 3 | 011 |
| 4 | 100 |
| 5 | 101 |
| 6 | 110 |
| 7 | 111 |
Пример
Переведём число:
$$ 56_8 $$
в двоичную систему.
Заменяем каждую восьмеричную цифру:
| Цифра | Двоичная запись |
|---|---|
| 5 | 101 |
| 6 | 110 |
Получаем:
$$ 56_8 = 101110_2 $$
Ответ:
$$ 56_8 = 101110_2 $$
Быстрый перевод между двоичной и шестнадцатеричной системами
Шестнадцатеричная система тоже связана с двоичной.
Так как:
$$ 16 = 2^4 $$
то одна шестнадцатеричная цифра заменяется на 4 двоичных разряда.
Таблица соответствия
| Шестнадцатеричная цифра | Двоичная запись |
|---|---|
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
| A | 1010 |
| B | 1011 |
| C | 1100 |
| D | 1101 |
| E | 1110 |
| F | 1111 |
Пример
Переведём число:
$$ 3F_{16} $$
в двоичную систему.
Заменяем каждый символ:
| Символ | Двоичная запись |
|---|---|
| 3 | 0011 |
| F | 1111 |
Получаем:
$$ 3F_{16} = 00111111_2 $$
Нули в начале можно убрать:
$$ 3F_{16} = 111111_2 $$
Ответ:
$$ 3F_{16} = 111111_2 $$
Как проверить ответ с помощью Python
В Python есть готовые функции для перевода чисел.
Из десятичной системы в двоичную
n = 13
print(bin(n))
Результат:
0b1101
0b означает, что число записано в двоичной системе.
То есть:
$$ 13_{10} = 1101_2 $$
Из десятичной системы в восьмеричную
n = 47
print(oct(n))
Результат:
0o57
0o означает, что число записано в восьмеричной системе.
То есть:
$$ 47_{10} = 57_8 $$
Из десятичной системы в шестнадцатеричную
n = 42
print(hex(n))
Результат:
0x2a
0x означает, что число записано в шестнадцатеричной системе.
То есть:
$$ 42_{10} = 2A_{16} $$
Из другой системы в десятичную
Для перевода в десятичную систему используется функция int().
print(int("1101", 2))
print(int("57", 8))
print(int("2A", 16))
Результат:
13
47
42
Общий вид:
int("число", основание)
Например:
print(int("1010", 2))
Это значит:
Переведи число
1010из двоичной системы в десятичную.
Частые ошибки учеников
Ошибка 1. Использовать запрещённые цифры
В двоичной системе можно использовать только:
$$ 0 \text{ и } 1 $$
Поэтому запись:
$$ 102_2 $$
неверная.
Почему?
Потому что в двоичной системе нет цифры 2.
Ошибка 2. Читать двоичное число как обычное
Например:
$$ 101_2 $$
Это не "сто один".
Это число в двоичной системе.
Переведём:
$$ 101_2 = 1 \cdot 2^2 + 0 \cdot 2^1 + 1 \cdot 2^0 $$
$$ 101_2 = 4 + 0 + 1 $$
$$ 101_2 = 5_{10} $$
Ошибка 3. Забывать записывать остатки снизу вверх
При переводе из десятичной системы в двоичную остатки записывают снизу вверх.
Например:
| Деление | Остаток |
|---|---|
| 10 : 2 = 5 | 0 |
| 5 : 2 = 2 | 1 |
| 2 : 2 = 1 | 0 |
| 1 : 2 = 0 | 1 |
Если записать сверху вниз, получится:
0101
Это неправильно.
Правильно записывать снизу вверх:
1010
Значит:
$$ 10_{10} = 1010_2 $$
Мини-практика
Попробуйте решить самостоятельно.
Задание 1
Переведите число в десятичную систему:
$$ 1010_2 $$
Задание 2
Переведите число в двоичную систему:
$$ 19_{10} $$
Задание 3
Переведите число в десятичную систему:
$$ 64_8 $$
Задание 4
Переведите число в десятичную систему:
$$ 1F_{16} $$
Ответы
Ответ к заданию 1
$$ 1010_2 = 1 \cdot 2^3 + 0 \cdot 2^2 + 1 \cdot 2^1 + 0 \cdot 2^0 $$
$$ 1010_2 = 8 + 0 + 2 + 0 $$
$$ 1010_2 = 10_{10} $$
Ответ:
$$ 1010_2 = 10_{10} $$
Ответ к заданию 2
Переведём число:
$$ 19_{10} $$
в двоичную систему.
| Деление | Остаток |
|---|---|
| 19 : 2 = 9 | 1 |
| 9 : 2 = 4 | 1 |
| 4 : 2 = 2 | 0 |
| 2 : 2 = 1 | 0 |
| 1 : 2 = 0 | 1 |
Записываем остатки снизу вверх:
10011
Ответ:
$$ 19_{10} = 10011_2 $$
Ответ к заданию 3
$$ 64_8 = 6 \cdot 8^1 + 4 \cdot 8^0 $$
$$ 64_8 = 48 + 4 $$
$$ 64_8 = 52_{10} $$
Ответ:
$$ 64_8 = 52_{10} $$
Ответ к заданию 4
Буква F означает 15.
$$ 1F_{16} = 1 \cdot 16^1 + F \cdot 16^0 $$
$$ 1F_{16} = 1 \cdot 16 + 15 \cdot 1 $$
$$ 1F_{16} = 31_{10} $$
Ответ:
$$ 1F_{16} = 31_{10} $$
Главное, что нужно запомнить
| Что нужно знать | Объяснение |
|---|---|
| Система счисления | Способ записи чисел |
| Основание системы | Количество цифр в системе |
| Двоичная система | Использует 0 и 1 |
| Восьмеричная система | Использует цифры от 0 до 7 |
| Десятичная система | Использует цифры от 0 до 9 |
| Шестнадцатеричная система | Использует цифры 0–9 и буквы A–F |
Короткая шпаргалка
2-ричная система: 0, 1
8-ричная система: 0, 1, 2, 3, 4, 5, 6, 7
10-ричная система: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
16-ричная система: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Вывод
Системы счисления помогают понять, как компьютер работает с числами и информацией.
Особенно важно уметь:
- переводить числа из двоичной системы в десятичную;
- переводить числа из десятичной системы в двоичную;
- работать с восьмеричной и шестнадцатеричной системами;
- понимать, почему компьютер использует нули и единицы.
Эта тема часто встречается в школьной информатике, контрольных, ОГЭ и ЕГЭ, поэтому её нужно хорошо отработать на примерах.