Двоичная система счисления
Двоичная система счисления — это позиционная система с основанием 2. В ней всего две цифры: 0 и 1. Звучит скромно, но именно на этих двух цифрах работает вся современная вычислительная техника — от смартфона до суперкомпьютера.
Почему компьютеры «думают» двоично
Внутри процессора информация передаётся электрическими сигналами. У сигнала проще всего различить два состояния: «есть напряжение» и «нет напряжения». Эти состояния удобно обозначить как 1 и 0.
Можно было бы придумать схему с десятью уровнями напряжения — по одному на каждую десятичную цифру. Но такая схема была бы капризной: малейшая помеха, и уровень 6 превращается в 7. Два состояния различать гораздо надёжнее, поэтому инженеры выбрали двоичную систему.
Одна двоичная цифра называется битом (от англ. binary digit). Группа из 8 бит — это байт. В одном байте помещаются числа от 0 до 255.
Как устроено двоичное число
Двоичная система — позиционная, как и привычная нам десятичная. Значение цифры зависит от её позиции: каждая следующая позиция «весит» в два раза больше предыдущей. Веса позиций — это степени двойки: 1, 2, 4, 8, 16, 32 и так далее.
Разберём число 1101 в двоичной системе:
| Позиция (справа налево) | 3 | 2 | 1 | 0 |
|---|---|---|---|---|
| Цифра | 1 | 1 | 0 | 1 |
| Вес позиции | 2³ = 8 | 2² = 4 | 2¹ = 2 | 2⁰ = 1 |
| Вклад в сумму | 8 | 4 | 0 | 1 |
Складываем вклады: 8 + 4 + 0 + 1 = 13. Значит, двоичное 1101 — это десятичное 13.
Считаем по-двоичному
Счёт в двоичной системе идёт по тем же правилам, что и в десятичной: когда цифры заканчиваются, добавляем разряд. Только заканчиваются они быстро — уже после единицы.
| Десятичное | Двоичное | Десятичное | Двоичное |
|---|---|---|---|
| 0 | 0 | 8 | 1000 |
| 1 | 1 | 9 | 1001 |
| 2 | 10 | 10 | 1010 |
| 3 | 11 | 11 | 1011 |
| 4 | 100 | 12 | 1100 |
| 5 | 101 | 13 | 1101 |
| 6 | 110 | 14 | 1110 |
| 7 | 111 | 15 | 1111 |
Обратите внимание на закономерность: круглые в двоичном смысле числа — 2, 4, 8, 16 — записываются как единица с нулями, точно так же, как 10, 100, 1000 в десятичной системе.
Как получить двоичную запись числа
Чтобы перевести десятичное число в двоичное, делим его на 2 и записываем остатки. Переведём число 13:
| Действие | Частное | Остаток |
|---|---|---|
| 13 ÷ 2 | 6 | 1 |
| 6 ÷ 2 | 3 | 0 |
| 3 ÷ 2 | 1 | 1 |
| 1 ÷ 2 | 0 | 1 |
Деление закончилось, когда частное стало равно нулю. Теперь читаем остатки снизу вверх: 1101. Получили ту же запись, что и раньше: 13 в десятичной системе — это 1101 в двоичной.
Частая ошибка — прочитать остатки сверху вниз. Запомните: первый остаток — это младший разряд, он стоит в самом конце числа.
Сколько чисел помещается в N бит
В одном бите помещаются два значения: 0 и 1. В двух битах — четыре: 00, 01, 10, 11. Каждый новый бит удваивает количество вариантов. Общее правило: N бит кодируют 2N разных значений.
- 4 бита — 16 значений (от 0 до 15);
- 8 бит (байт) — 256 значений (от 0 до 255);
- 16 бит — 65 536 значений;
- 32 бита — 4 294 967 296 значений.
Именно поэтому в настройках цвета каналы RGB принимают значения от 0 до 255: на каждый канал отведён ровно один байт.
Где двоичная система встречается на практике
- Память и файлы. Размеры измеряются в байтах, килобайтах, мегабайтах — всё это степени двойки.
- Права доступа в Unix. Запись вроде
rwxr-xr--— это по сути три тройки бит. - IP-адреса и маски сетей. Адрес IPv4 — это 32 бита, разбитые на четыре байта.
- Флаги и битовые маски. Программисты хранят набор переключателей «да/нет» в одном числе, где каждый бит — отдельный флаг.
Что мы узнали
- Двоичная система — позиционная система с основанием 2 и цифрами 0 и 1.
- Компьютеры используют её, потому что два состояния сигнала различать надёжнее всего.
- Вес каждой позиции — степень двойки: 1, 2, 4, 8, 16…
- Чтобы перевести число в двоичную систему, делим его на 2 и читаем остатки снизу вверх.
- N бит кодируют 2N значений: один байт — это числа от 0 до 255.