Двоичное кодирование: язык нулей и единиц

Понимаем, почему компьютер «думает» нулями и единицами и как с их помощью можно закодировать что угодно.

Двоичный код — это запись информации с помощью всего двух символов: 0 и 1. Каждый такой символ — это один бит.

Почему всего два символа

Внутри компьютера нет ни букв, ни картинок, ни звуков — там бегает электрический ток. И у тока проще всего различить два состояния: есть напряжение или нет напряжения. Эти два состояния и обозначают цифрами 1 (есть) и 0 (нет). Различить два чётких состояния легко и надёжно, а вот десять разных уровней напряжения машина путала бы. Поэтому компьютер и «говорит» на языке из двух символов — двоичном.

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

Как двумя символами закодировать многое

Одним битом можно различить только два варианта: 0 или 1. Маловато. Но если взять несколько битов подряд, вариантов становится больше. Вспомни формулу из первого раздела: N = 2ⁱ.

БитовСколько вариантовПримеры комбинаций
120, 1
2400, 01, 10, 11
38000, 001, ... , 111
8 (1 байт)25600000000 ... 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, остатки читаем снизу вверх.
Проверьте себя
1. Почему компьютер использует именно двоичную систему?
AТак быстрее считать
BЛегко надёжно различить два состояния: есть напряжение или нет
CДвоичных чисел больше, чем десятичных
DТак захотел изобретатель компьютера
2. Чему равно двоичное число 1010 в десятичной системе?
A8
B10
C12
D1010
3. Сколько различных вариантов можно закодировать одним байтом (8 битами)?
A8
B16
C128
D256
Поддержать проект