На Горох
Информатика, 10 класс

§ 6. Кодирование

"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.

Объяснение темы В оглавлении: § 6. Кодирование

Кратко о теме

Кодирование заменяет исходные данные их представлением по установленному правилу. Так компьютер хранит и передаёт тексты, числа, изображения и звук в виде последовательностей битов. Чтобы восстановить данные, получатель должен знать правило и пользоваться той же таблицей кодов, что и отправитель. Важные свойства кода — длина его слов и возможность однозначно разделить их при чтении.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

Кодирование — замена исходных данных их представлением по установленному правилу. Если правило известно, можно выполнить обратное преобразование — декодирование. Это позволяет хранить и передавать информацию в форме, удобной для устройства или канала связи.

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

Кодовое слово — последовательность символов алфавита кодирования, которую сопоставляют исходному символу или целому сообщению. Например, букве можно поставить в соответствие 101. Понятие нужно, чтобы обсуждать, как именно записывается каждый элемент исходных данных.

Равномерный код — код, в котором все кодовые слова имеют одинаковую длину. В неравномерном коде длины слов различаются. Фиксированная длина упрощает разделение и обработку слов, а переменная может сократить запись, если короткие слова чаще назначают частым символам.

Как это устроено

При кодировании каждому исходному символу или сообщению ставят в соответствие кодовое слово. Получатель должен знать это соответствие и правила чтения, иначе он не сможет установить, какой исходный элемент обозначают полученные знаки. Поэтому одного факта, что данные записаны битами, недостаточно для восстановления исходного текста.

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

У двоичного слова длины k на каждой позиции есть два возможных значения. Поэтому всего существует 2ᵏ разных слов: например, при k = 2 получаются 00, 01, 10 и 11. Для N исходных символов выбирают наименьшее целое k, при котором 2ᵏ ≥ N; округление вверх необходимо, потому что длина слова не может быть дробной.

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

Таблица кодов связывает каждый символ с числом или двоичной последовательностью. Например, таблица кодировки текста сообщает, какие числовые значения соответствуют буквам и знакам. Если отправитель и получатель используют разные таблицы, один набор битов может обозначать разные символы, поэтому для чтения требуется согласованная кодировка.

Сравнение равномерного и неравномерного кодирования

СвойствоРавномерный кодНеравномерный код
Длина кодовых словОдинаковая для всех словМожет различаться
Как определить границы кодовых словРазбить поток на группы заданной длиныИспользовать правило декодирования или разделители
Однозначность декодированияОбеспечивается известной длиной и таблицей соответствийТребует проверки: возможны неоднозначные разбиения
ПреимуществаПростые чтение и обработкаМожно сократить среднюю длину сообщения
Ограничения и условия примененияЧасто использует лишние биты для частых символовНужно однозначно находить границы слов

Сравнивайте коды по строкам: сначала выясните, как делится поток, затем оцените однозначность и удобство. Если важна экономия, учитывайте не только длины слов, но и частоты символов. Короткий код не будет удобен, если сообщение нельзя восстановить единственным способом.

Разбор задач

Задача 1. Для пяти символов требуется равномерный двоичный код минимальной длины. Нужно определить, сколько разрядов выделить каждому символу, и проверить, хватит ли комбинаций.

  1. Обозначим длину слова через k. Для пяти разных символов необходимо не менее пяти разных кодовых слов.
  2. При длине k существует 2ᵏ вариантов, поэтому проверяем условие 2ᵏ ≥ 5. Для k = 2 получаем 4, чего недостаточно.
  3. При k = 3 получаем 8 вариантов, то есть кодовых слов хватает. Поскольку 3 — первое подходящее целое число, длина минимальна.

Ответ: минимальная длина равна 3 битам; из восьми комбинаций можно выбрать пять.

Задача 2. Используются кодовые слова 0, 10 и 11. Нужно декодировать последовательность 10110. Проверим, что ни одно из заданных слов не является началом другого: слово 0 начинается с 0, а слова 10 и 11 различаются вторым битом.

  1. Читаем поток слева направо и ищем слово, которое начинается с первого ещё не прочитанного бита.
  2. Первые два бита — 10, это кодовое слово. Остаётся 110.
  3. Следующие два бита — 11, это тоже кодовое слово. Остаётся 0, которое является последним словом.

Ответ: последовательность декодируется однозначно и соответствует словам 10, 11, 0.

Задача 3. Символы A, B, C встречаются соответственно 5, 3 и 2 раза. Сравним равномерный код A = 00, B = 01, C = 10 и неравномерный код A = 0, B = 10, C = 11. У неравномерного набора ни одно слово не является началом другого, значит, его можно декодировать слева направо без разделителей.

  1. Для равномерного кода длины слов равны 2, поэтому всего требуется 5 × 2 + 3 × 2 + 2 × 2 = 20 бит.
  2. Для второго кода длины равны 1, 2 и 2 битам. Получаем 5 × 1 + 3 × 2 + 2 × 2 = 15 бит.
  3. Делим затраты на общее число символов, 10: средняя длина первого кода — 2 бита, второго — 1,5 бита.

Ответ: второй код экономнее для заданных частот и однозначно декодируется без разделителей.

Типичные ошибки

Ошибка — считать, что для N символов достаточно длины log₂N без округления. Такое значение может быть дробным, а длина слова должна быть целым числом; проверяйте условие 2ᵏ ≥ N и выбирайте наименьшее целое k. Например, для пяти символов двух разрядов не хватает, потому что 2² = 4.

Не путайте символ исходного алфавита с символом двоичного алфавита. Буква — исходный символ, а её кодовое слово может состоять из нескольких нулей и единиц. Проверяйте, что в примере вы называете отдельной буквой, а что — последовательностью битов, которой она закодирована.

При декодировании неравномерного кода нельзя произвольно делить поток на части. Если одно кодовое слово может начинать другое, разбиение иногда становится неоднозначным. Перед чтением проверьте правила разделения и попробуйте последовательно разобрать поток разными способами.

Ещё одна ошибка — считать, что биты сами по себе однозначно задают текст. Для восстановления нужны правило кодирования и согласованная таблица символов; разные таблицы могут по-разному трактовать одну последовательность. Проверьте, известна ли используемая кодировка и совпадает ли она у отправителя и получателя.

Связь с другими темами

Чтобы понимать двоичные коды, полезно знать двоичную запись чисел и представлять, что данные можно записать последовательностью битов. Кодирование применяют при хранении и передаче текстов, изображений и звука, а также при сжатии данных. Понимание кодовых слов и однозначного декодирования пригодится при изучении алгоритмов сжатия и передачи информации.

Что запомнить

  • Кодирование заменяет данные их представлением по заданному правилу.
  • В двоичном коде используются символы 0 и 1.
  • Для N разных символов равномерного двоичного кода длины k необходимо, чтобы 2ᵏ ≥ N.
  • Равномерный код проще читать по группам фиксированной длины.
  • Неравномерный код может экономить место, но его нужно уметь однозначно декодировать.
  • Для восстановления данных отправитель и получатель должны использовать согласованные правила кодирования.

Частые вопросы по теме

Почему компьютер использует именно нули и единицы?

Электронным устройствам удобно различать два устойчивых состояния, например наличие и отсутствие сигнала. Их обозначают цифрами 1 и 0, поэтому данные представляют последовательностями этих цифр.

Как найти минимальную длину двоичного кода для заданного числа символов?

Нужно найти наименьшее целое k, для которого 2ᵏ не меньше числа символов N. Именно столько разных двоичных слов длины k существует.

Чем равномерный код отличается от неравномерного?

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

Почему последовательность битов иногда нельзя однозначно декодировать?

Если неизвестно правило разделения слов, одни и те же биты можно разбить на кодовые слова несколькими способами. Например, кодовые слова 0, 01 и 1 допускают для последовательности 01 разбор и как одно слово, и как два.

Зачем при чтении текста нужна таблица кодировки?

Таблица связывает символы с числовыми или двоичными кодами. Разные таблицы могут назначать одной и той же последовательности битов разные символы, поэтому для чтения текста нужно знать используемую кодировку.

Спросить по теме параграфа

§ 6. Кодирование

Эта же тема в других учебниках

Учебник

Оглавление →
Предмет
Информатика
Класс
10 класс
Учебник
"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.