"Информатика и ИКТ (изд. "ДРОФА")", Быкадоров Ю.А.
Кодирование позволяет представить сообщение с помощью условных знаков, чисел или сигналов по определённому правилу. Так данные можно хранить и передавать, а затем восстанавливать с помощью декодирования. Одно сообщение допускает разные варианты кодирования, поэтому для обратного преобразования нужно знать используемый код и правило соответствия. Если не заданы границы кодовых обозначений, восстановление иногда бывает неоднозначным.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Код — набор условных обозначений и правила, по которым сообщения представляют в виде этих обозначений. Например, буквам можно сопоставить числа, а звукам — сигналы разной длительности. Понятие кода помогает описать, из каких знаков составляется новое представление сообщения и как его читать.
Кодирование — преобразование сообщения в код по заданному правилу. Сообщение до преобразования называют исходным текстом, даже если оно состоит не только из букв. Кодирование нужно, чтобы представить информацию в форме, удобной для хранения, передачи или обработки.
Декодирование — восстановление сообщения по его кодовому представлению и правилам кодирования. Например, если каждой букве соответствует число, при декодировании по числам находят буквы. Это обратное преобразование позволяет снова получить сообщение, понятное получателю.
Ключ кодирования — правило или таблица соответствия, необходимые для кодирования и обратного преобразования. Ключ показывает, какое обозначение соответствует каждому знаку или группе знаков. Без него одни и те же кодовые символы могут быть истолкованы по-разному.
Одному сообщению можно сопоставить последовательность символов, чисел или сигналов. Например, в условном коде букве А соответствует знак 1, а букве Б — знак 2: тогда текст «АБ» превращается в «1, 2». Это возможно, потому что код задаёт замену исходных знаков новыми обозначениями, сохраняя информацию о сообщении.
Полученный результат зависит от двух решений: какие обозначения разрешены и какое правило связывает их с исходными знаками. Если буквы заменяют числами, итог будет одним, а если сигналами — другим. Поэтому кодовое сообщение нельзя правильно истолковать, просто глядя на его вид: нужно знать, по какой таблице или правилу оно составлено.
Работа с таблицей соответствий состоит из двух встречных действий. При кодировании для каждого знака исходного текста находят соответствующую запись в таблице и выписывают её в том же порядке. При декодировании ищут в таблице кодовое обозначение и заменяют его исходным знаком; так, таблица А→1, Б→2, В→3 превращает последовательность 2, 1 в «БА».
Чтобы восстановление было однозначным, нужно знать и соответствия, и границы обозначений. Если коды состоят из нескольких цифр, непрерывная запись может допускать разные разбиения: например, 112 можно прочитать как 11|2 или 1|12. При разных таблицах эти разбиения могут дать разные тексты, поэтому границы задают разделителями или выбирают такой код, который однозначно разбивается.
Кодовое представление удобно хранить или передавать вместо исходного сообщения, а затем выполнять обратное преобразование. При этом получатель должен иметь нужное правило и понимать границы кодовых групп. Само изменение формы записи не обязательно скрывает смысл: для секретности нужны специальные средства шифрования, а не просто замена знаков.
| Этап | Что дано | Что выполняется | Что получается |
|---|---|---|---|
| Кодирование | Исходное сообщение и правило (ключ) кодирования | Замена знаков или групп знаков кодовыми обозначениями | Кодовое сообщение |
| Декодирование | Кодовое сообщение и правило (ключ) кодирования | Обратное преобразование кодовых обозначений | Восстановленное исходное сообщение |
Чтобы пользоваться таблицей, сначала определите, какой этап выполняется и что дано на входе. Затем примените указанное правило и проверьте, что получилось: при кодировании это кодовое сообщение, а при декодировании — исходный текст. На обоих этапах важно пользоваться одним и тем же ключом.
Задача 1. По таблице замен А→1, Б→2, В→3 закодируйте слово «БАВ». Нужно заменить каждый знак слова соответствующей цифрой. Поскольку все обозначения здесь однозначные и одноцифровые, их можно записать подряд.
Ответ: слово «БАВ» кодируется последовательностью 213. Порядок знаков не меняют, потому что иначе получилось бы кодовое сообщение для другого текста.
Задача 2. По той же таблице декодируйте последовательность 3, 1, 2. Теперь нужно выполнить обратную замену: каждой цифре найти соответствующую букву. Запятые уже показывают границы кодовых обозначений.
Ответ: восстановленное слово — «ВАБ». Проверка простая: если заменить его буквы по таблице, снова получится 3, 1, 2.
Задача 3. Код задан заменами А→1, Б→11, В→2. Можно ли однозначно декодировать последовательность 112 без разделителей? Сначала проверим, где могут проходить границы кодов: код 11 подходит для Б, а код 1 в этой таблице не задан. Однако последовательность можно разделить иначе, если учитывать только имеющиеся коды.
Ответ: для указанной таблицы последовательность 112 декодируется однозначно как «БВ». Чтобы границы были очевидны при записи и передаче, можно использовать разделитель: 11|2. Если бы для цифры 1 тоже существовал исходный знак, появилось бы дополнительное разбиение, и потребовалось бы отдельно устранять неоднозначность.
Чтобы разобраться в кодировании, нужно знать, что такое сообщение, алфавит и знаки, из которых составлен текст. Кодирование применяют при представлении и передаче информации, а также при работе компьютера с текстами и другими данными. Изучение этой темы подготавливает к двоичному кодированию и пониманию того, как данные представляются в компьютере.
Чем кодирование отличается от шифрования?
Кодирование меняет форму представления сообщения по заданному правилу, например заменяет буквы числами. Шифрование специально скрывает содержание и обычно требует секретного ключа; обычное кодирование само по себе секретности не обеспечивает.
Можно ли одно и то же сообщение закодировать по-разному?
Да. Можно выбрать разные алфавиты кодовых обозначений и разные таблицы соответствий. Поэтому полученные кодовые сообщения могут отличаться, хотя исходный текст один и тот же.
Почему для декодирования нужен ключ или правило?
Без правила неизвестно, какой исходный знак обозначает кодовая группа. Одни и те же цифры могут использоваться в разных кодах с разными значениями. Ключ задаёт соответствие, по которому восстанавливают сообщение.
Что делать, если последовательность кода можно разбить на группы несколькими способами?
Нужно уточнить границы кодовых групп: например, поставить разделители между ними. Можно также изменить код так, чтобы он декодировался однозначно и без разделителей. Пока возможны разные разбиения с разными результатами, нельзя уверенно восстановить исходный текст.
Всегда ли после декодирования получается исходное сообщение без ошибок?
Нет, если при передаче или записи кодовое сообщение исказилось, часть знаков может восстановиться неверно или потеряться. Кроме того, результат будет неправильным, если применить не тот ключ или неверно определить границы групп. При правильном правиле и точной передаче декодирование восстанавливает исходное сообщение.
§ 36. Кодирование и декодирование