P
pro·school.ru
Каталог школ

Равномерное двоичное кодирование символов

💻 Информатика · 8 класс

Что такое равномерное кодирование

Равномерное (равнодлинное) кодирование — это способ записи символов алфавита двоичными кодами одинаковой длины. Каждому символу ставится в соответствие уникальная цепочка из нулей и единиц фиксированной длины. Такой подход упрощает чтение сообщения: компьютер просто отсчитывает одинаковые порции битов, не угадывая, где заканчивается код одного символа и начинается код другого.

Именно равномерное кодирование используется в большинстве привычных кодировок. Например, в таблице ASCII каждый символ кодируется восемью битами, поэтому коды всех символов имеют одинаковую длину.

Связь длины кода и мощности алфавита

Мощность алфавита N — это число различных символов в нём. Если на каждый символ отводится i битов, то можно закодировать не более N = 2^i символов. Это основная формула алфавитного подхода. Из неё минимальная длина кода находится из условия 2^i ≥ N: берут наименьшее целое i, при котором степень двойки покрывает все символы.

Сколько битов нужно

Символов в алфавитеБитов на символ
21
42
83
164
325
646
2568

Разбор примера

Алфавит содержит 33 буквы русского языка. Сколько битов нужно на букву при равномерном кодировании? Подбираем степень двойки, не меньшую 33:

2^5 = 32 < 33

2^6 = 64 ≥ 33

Пяти битов мало, значит нужно i = 6 битов на символ. Тогда сообщение из 20 букв займёт:

20 · 6 = 120 битов = 15 байтов

Обратная задача

Бывает и обратная задача: известна длина кода, нужно найти мощность алфавита. Если на символ отводится 7 битов, то в алфавите может быть 2^7 = 128 различных символов. Зная общий объём сообщения и длину одного кода, можно найти число символов в тексте: достаточно поделить объём на длину кода.

Равномерное и неравномерное кодирование

Кроме равномерного, существует и неравномерное кодирование, при котором частым символам дают короткие коды, а редким — длинные. Оно экономит память, но усложняет чтение: нужно особое условие, чтобы коды не путались между собой. В школьном курсе основным считается именно равномерное кодирование, потому что оно проще и применяется в большинстве привычных кодировок.

Разбор обратного примера

Сообщение записано в алфавите из 64 символов и занимает 300 битов. Найдём длину текста. Сначала длина кода одного символа: 2^6 = 64, значит i = 6 битов. Тогда число символов равно:

300 : 6 = 50 символов

Частая ошибка. Если 2^i чуть меньше N, нельзя округлять вниз: код должен вмещать все символы. Берут ближайшую степень двойки, которая не меньше мощности алфавита. Длина кода всегда целое число битов.

Кратко о главном

  • При равномерном кодировании все символы имеют код одной длины.
  • Число символов и длина кода связаны формулой N = 2^i.
  • Длину кода находят из условия 2^i ≥ N, округляя вверх до целого.
  • Информационный объём сообщения равен числу символов, умноженному на длину кода.
  • Зная объём и длину кода, можно найти количество символов в тексте.