Урок №6. Равномерные и неравномерные двоичные коды.
Если нам нужно записать в память компьютера какой-то текст на русском языке, его нужно представить в виде двоичного кода, т. е. перекодировать.
Например, перекодируем слово ГАГАРА в двоичный алфавит, считая, что в тексте есть только буквы «А», «Г» и «Р», т. е. алфавит состоит из трёх знаков. Присвоим каждой из этих букв двоичные коды — кодовые слова (рис. 2.5).

Закодируйте с помощью этого кода слово ГАГАРА.
Такой код называется равномерным, потому что длина всех кодовых слов одинакова.
Равномерный код — это код, в котором все кодовые слова имеют одинаковую длину.
Теперь предположим, что по компьютерной сети передана цепочка
000010000100000010000100
Известно, что для кодирования использовалась таблица, показанная на рис. 2.5, и нам нужно узнать, какое сообщение было закодировано. Эта операция называется декодированием.
Декодирование — это восстановление исходного сообщения из кода.
Сообщение 000010000100000010000100 закодировано с помощью равномерного кода, приведённого на рис. 2.5. Определите, сколько знаков было в исходном сообщении. Как вы рассуждали? Декодируйте это сообщение.
Равномерный 5-битный двоичный код, разработанный в конце XIX века Жаном Морисом Бодо, использовался в телеграфных аппаратах. В современных компьютерных системах при передаче текстовых сообщений также часто применяют равномерный (8-битный или 16-битный) код.
Можно ли было для кодирования букв «А», «Г», «Р» использовать более короткий равномерный код? Определите наименьшую возможную длину кодовых слов.
Если для кодирования используется алфавит мощностью M, то с помощью кодовых слов длиной L можно закодировать ML различных знаков. Это число должно быть не меньше, чем мощность алфавита исходного сообщения M0, потому что иначе какие-то буквы обязательно получат одинаковые коды.
Длину кодовых слов L выбирают из условия ML>M0, где М0 — мощность алфавита исходного сообщения и М — мощность нового алфавита.
Как выбрать наименьшую возможную длину кодовых слов при равномерном кодировании?
В сообщении используются 33 русские прописные буквы и пробел. Определите наименьшую длину кодовых слов для равномерного кодирования этого сообщения в трёхбуквенном и четырёхбуквенном алфавитах.
Недостаток равномерного кода в том, что закодированные сообщения получаются довольно длинными, и на их передачу компьютерная система тратит много времени. Попробуем сократить длину сообщения, используя кодовые слова разной длины, например так (рис. 2.6).

Такой код называется неравномерным.
Неравномерный код — это код, в котором кодовые слова имеют различную длину.
Закодируйте с помощью этого кода слово ГАГАРА. При использовании равномерного или неравномерного кода закодированное сообщение получилось короче?
Декодируйте сообщение 010010, закодированное с помощью кода на рис. 2.6. Попробуйте построить разные варианты декодированного сообщения.
Сообщения, закодированные с помощью неравномерного кода, не всегда можно декодировать однозначно.
Есть ли такие неравномерные коды, сообщения в которых однозначно декодируются? Оказывается, есть. Например, такой код (рис. 2.7).

Закодируйте с помощью этого кода слово ГАГАРА. Сравните длины полученного закодированного сообщения и сообщений, которые вы построили ранее. Какое из них самое короткое? Самое длинное?
Декодируйте сообщение 01001011, закодированное с помощью кода на рис. 2.7. Попробуйте построить различные варианты декодирования.
Неравномерный код декодируется однозначно, если выполняется условие Фано: ни одно кодовое слово не совпадает с началом другого кодового слова.
Для кода на рис. 2.7 условие Фано выполняется: код буквы «А» (0) не совпадает с началом остальных кодовых слов, то же выполняется и для остальных букв.
Долгое время для передачи сообщений по телеграфу и радио применялся код Морзе (азбука Морзе), предложенный американским художником и изобретателем Самюэлем Морзе. В этом коде все буквы и цифры кодируются в виде различных последовательностей точек и тире.

Определите, к каким кодам относится код Морзе — к равномерным или неравномерным. Как вы рассуждали?
Как вы думаете, какие буквы должны иметь более короткие коды: те, которые в текстах встречаются чаще, или те, которые встречаются реже?
Чтобы узнать, как часто встречается каждая буква в текстах, Морзе посетил типографию и подсчитал количество используемых литер с изображениями разных букв. Поэтому английская буква «Е», которая встречается в текстах чаще всего, получила код •. Коды Морзе для русских букв совпадают с кодами похожих по звучанию английских букв, например коды букв «Л» и «L» одинаковы.
Проверьте, выполняется ли для кода Морзе условие Фано.
Чтобы отделить последовательности (коды букв) друг от друга, вводят ещё один знак — пробел (пауза). Если бы не было разбивки на буквы, текст было бы невозможно декодировать однозначно.
Давайте вспомним, как измеряется количество информации (данных) в компьютерных системах. Сообщение кодируется с помощью двоичного кода, и количество информации в битах определяется как длина полученной битовой цепочки.
Сколько бит информации содержится в сообщении 10100011?
Сколько знаков содержит алфавит двоичного кода?
Определите, сколько различных сообщений можно закодировать с помощью i бит.
На практике используются следующие единицы количества информации:
1 байт = 8 бит.
1 Кбайт = 1024 байта = 210 байта = 213 бит.
1 Мбайт = 1024 Кбайт = 220 байта = 223 бит.
1 Гбайт = 1024 Мбайт.
1 Тбайт = 1024 Гбайт.