Двоичное кодирование: язык нулей и единиц
Понимаем, почему компьютер «думает» нулями и единицами и как с их помощью можно закодировать что угодно.
Двоичный код — это запись информации с помощью всего двух символов: 0 и 1. Каждый такой символ — это один бит.
Почему всего два символа
Внутри компьютера нет ни букв, ни картинок, ни звуков — там бегает электрический ток. И у тока проще всего различить два состояния: есть напряжение или нет напряжения. Эти два состояния и обозначают цифрами 1 (есть) и 0 (нет). Различить два чётких состояния легко и надёжно, а вот десять разных уровней напряжения машина путала бы. Поэтому компьютер и «говорит» на языке из двух символов — двоичном.
Это как азбука Морзе, где всего точка и тире, но ими можно передать любой текст. Или как выключатель: только «включено» и «выключено», но из множества выключателей можно собрать сложную схему.
Как двумя символами закодировать многое
Одним битом можно различить только два варианта: 0 или 1. Маловато. Но если взять несколько битов подряд, вариантов становится больше. Вспомни формулу из первого раздела: N = 2ⁱ.
| Битов | Сколько вариантов | Примеры комбинаций |
| 1 | 2 | 0, 1 |
| 2 | 4 | 00, 01, 10, 11 |
| 3 | 8 | 000, 001, ... , 111 |
| 8 (1 байт) | 256 | 00000000 ... 11111111 |
Восемью битами (одним байтом) можно закодировать 256 разных вариантов — этого хватает, чтобы пронумеровать все буквы, цифры и знаки на клавиатуре. Так и рождается идея: дать каждому символу свой номер, а номер записать битами.
Бит, байт и всё-всё-всё из них
Самое удивительное в двоичном коде — то, что им можно закодировать абсолютно любую информацию, а не только числа. Текст этого урока, фотография твоего кота, любимая песня, видео, программа — всё внутри компьютера хранится как длинные ряды нулей и единиц. Меняется только правило, по которому эти биты толкуют. Один и тот же байт 01000001 может означать число 65, или букву «A», или оттенок цвета пикселя — всё зависит от того, как мы договоримся его читать. Получается, компьютер — это машина, которая хранит и обрабатывает биты, а смысл этим битам придаём мы, люди, через программы и кодировки. В следующих уроках мы как раз разберём, как именно биты превращаются в текст, картинки и звук.
Двоичная система счисления
Привычные нам числа записаны в десятичной системе — в ней 10 цифр (0–9). Компьютерная двоичная система устроена так же, только цифр две (0 и 1), и каждый разряд означает не десятки и сотни, а степени двойки.
Разберём число 1101 в двоичной системе. Считаем справа налево, каждый разряд — степень двойки:
1 1 0 1
8 + 4 + 0 + 1 = 13
2³ 2² 2¹ 2⁰
Получается, двоичное 1101 — это десятичное 13. А чтобы перевести десятичное число в двоичное, его раз за разом делят на 2 и записывают остатки снизу вверх. Это легко перепутать вручную, поэтому давай доверим расчёт компьютеру.
Попробуй сам
Переведём число в двоичный код «вручную» — тем самым делением на 2 с остатками — и сверим со встроенной функцией Python.
chislo = 13
# Переводим делением на 2, остатки собираем в обратном порядке
x = chislo
dvoichnoe = ""
while x > 0:
ostatok = x % 2 # остаток 0 или 1 — это очередной бит
dvoichnoe = str(ostatok) + dvoichnoe
x = x // 2 # делим нацело
print("шаг: остаток", ostatok, " накопили:", dvoichnoe)
print("Число:", chislo)
print("Двоичный код:", dvoichnoe)
print("Проверка через Python:", bin(chislo))
Вывод:
шаг: остаток 1 накопили: 1 шаг: остаток 0 накопили: 01 шаг: остаток 1 накопили: 101 шаг: остаток 1 накопили: 1101 Число: 13 Двоичный код: 1101 Проверка через Python: 0b1101
Запись 0b1101 — это и есть наш ответ, приставка 0b просто означает «двоичное число». Поменяй chislo на 25 или 100 и проследи по шагам, как из остатков собирается код. Это самый частый вопрос на ОГЭ — потренируйся!
Сложение в двоичной системе
Раз компьютер хранит числа в двоичном виде, он и складывает их по-двоичному. И это проще, чем кажется! Правила сложения столбиком те же, что в десятичной, только «переполнение» наступает не на десятке, а на двойке. Запомнить нужно всего четыре случая: 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, и самое интересное — 1 + 1 = 10 (то есть 0, а единичка переносится в следующий разряд, как при 5 + 5 в десятичной получается 0 и перенос). Сложим 101 + 11 (это 5 + 3): справа 1 + 1 = 0 и перенос 1; в среднем разряде 0 + 1 + перенос 1 = 0 и снова перенос; слева 1 + перенос 1 = 10. Итог: 1000, то есть 8 — всё верно, 5 + 3 = 8! Именно так, складывая единички и перенося разряды, процессор и выполняет всю арифметику. А раз умножение — это многократное сложение, то и его компьютер сводит к тем же простым операциям над битами. Вся «математика» машины вырастает из этих четырёх крошечных правил.
Частые ошибки
- Собирать остатки сверху вниз. При делении на 2 остатки записывают снизу вверх (последний остаток — старший разряд).
- Путать степени двойки. Разряды справа налево: 1, 2, 4, 8, 16, 32... — каждый вдвое больше предыдущего.
- Думать, что компьютер хранит буквы «как есть». Внутри всё — нули и единицы; буквы лишь закодированы числами.
Запомни
- Компьютер использует два символа — 0 и 1, потому что их легко различить по наличию напряжения.
- Из нескольких битов получается много комбинаций: N = 2ⁱ.
- В двоичной системе разряды — это степени двойки (1, 2, 4, 8, ...).
- Перевод в двоичный код: делим на 2, остатки читаем снизу вверх.