"Информатика (в 2 частях)", Матвеева Н.В., Челак Е.Н., Конопатова Н.К., Панкратова Л.П., Нурова Н.А.
Десятичное кодирование — способ записать символы или целое сообщение с помощью чисел, составленных из цифр от 0 до 9. Для этого каждому символу назначают код по выбранному правилу, обычно записанному в кодовой таблице. Чтобы восстановить сообщение, нужно знать ту же таблицу и понимать, где заканчивается один код и начинается другой. Поэтому хороший код должен сохранять порядок символов и позволять прочитать исходное сообщение только одним способом.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Десятичное кодирование — представление символов или сообщений с помощью чисел, записанных цифрами от 0 до 9. Например, букве можно назначить число 12, а знаку пробела — отдельный числовой код. Такое представление нужно, чтобы записывать или передавать символы в выбранной числовой форме.
Код — правило, по которому объектам сообщения сопоставляют кодовые обозначения. Правило указывает, какое обозначение соответствует каждому символу. Оно нужно, чтобы отправитель и получатель одинаково выполняли замену и могли восстановить одно и то же сообщение.
Кодовый знак — отдельная цифра или последовательность цифр, которой обозначают символ. Например, если букве соответствует число 15, кодовый знак состоит из двух цифр. Это понятие помогает отличать сам символ от его числовой записи.
Кодовая таблица — перечень соответствий между символами и их десятичными кодами. В ней можно найти код нужной буквы, цифры или пробела, а при расшифровке — символ по коду. Таблица нужна, чтобы применять правило последовательно, а не подбирать значения наугад.
Чтобы закодировать сообщение, каждому его символу по выбранному правилу ставят в соответствие десятичный код. Сначала символы сообщения находят в кодовой таблице, а затем выписывают назначенные им числа. Так исходные знаки заменяются числами, но сами символы и цифры не обязательно совпадают по виду. Одно и то же правило применяют ко всему сообщению, иначе получатель не сможет понять, как читать запись.
Запись всего сообщения получают последовательным соединением кодов символов. При этом порядок кодов сохраняет порядок исходных символов: перестановка чисел изменила бы сообщение. Для обратного чтения нужно знать правило и границы кодов, потому что числа сами по себе не сообщают, сколько символов было закодировано. Поэтому запись кодов — это не просто набор цифр, а последовательность, которую читают по установленному способу.
Когда коды имеют разную длину, их соединение без дополнительных указаний может сбить читателя. Например, цифры подряд иногда можно разбить на группы по-разному, и каждая группа окажется допустимым кодом. Разделитель вроде запятой показывает конец одного кода, поэтому устраняет такое сомнение. Вместо разделителей можно задать другое правило, например установить коды одинаковой длины.
Одна буква может иметь разные числовые обозначения в разных кодовых таблицах. Это происходит потому, что код — выбранное соглашение, а не неизменное свойство символа. Если известны только цифры, но неизвестна таблица, нельзя надёжно определить, какие буквы им соответствуют. Для декодирования получатель должен пользоваться тем же правилом, что и отправитель.
При проектировании кода проверяют, можно ли по записи единственным способом восстановить исходное сообщение. Если одна последовательность цифр допускает несколько разбиений на коды, она не обеспечивает однозначного чтения. Разделители, коды одинаковой длины или специально выбранные сочетания обозначений помогают избежать этой проблемы. Благодаря однозначности сообщение не приходится угадывать по смыслу.
Таблица показывает условные обозначения символов и пример того, как коды записывают для сообщения. Чтобы закодировать текст, найди в ней каждый символ и выпиши его число, не меняя порядок. Для обратного чтения действуй в обратную сторону и следи за границами кодов.
| Символ | Десятичный код | Пример записи в сообщении |
|---|---|---|
| А | 1 | БА → 2, 1 |
| Б | 2 | БА → 2, 1 |
| В | 3 | В → 3 |
| Пробел | 0 | А Б → 1, 0, 2 |
| Последовательность символов и соответствующих кодов | Коды записывают в порядке символов | БА → 2, 1 |
Условие: по условной таблице А = 1, Б = 2, В = 3 закодировать слово «БА». Здесь каждому символу соответствует однозначный код, а значит, дополнительные разделители не нужны. Важно не менять порядок букв при записи чисел.
Ответ: «БА» кодируется как 2, 1, или как 21, если в этой таблице договорились не ставить разделители. Порядок чисел повторяет порядок букв.
Условие: по той же таблице определить сообщение, записанное кодами 3, 1, 2. Запятые уже отделяют один код от другого, поэтому не нужно искать границы внутри записи. Для каждого числа используем соответствие из исходной таблицы.
Ответ: запись «3, 1, 2» означает «ВАБ». Если поменять порядок кодов, получится другое сообщение.
Условие: даны коды А = 1, Б = 2, В = 3, Г = 4. Нужно понять, можно ли прочитать запись 123 без разделителей, если в общем случае коды могут быть многозначными. Однозначность проверяют не по догадке, а по числу возможных разбиений цифр на коды.
Ответ: без дополнительных условий запись 123 нельзя гарантированно прочитать однозначно. Для однозначности нужны известная таблица и способ определить границы кодов.
Ошибка — считать, что десятичный код буквы всегда одинаков. Так думают, потому что принимают условное обозначение за постоянное свойство буквы, хотя его задаёт таблица. Проверка: перед расшифровкой убедись, что знаешь, по какой таблице получено сообщение. Если таблицы отличаются, соответствия тоже могут различаться.
Иногда при кодировании забывают сохранить порядок кодов. Это случается, когда числа выписывают отдельно и не сверяют их с исходным словом. Проверка проста: двигайся по сообщению слева направо и отмечай код каждого символа в той же очереди. При расшифровке также записывай найденные буквы по порядку кодов.
Другая ошибка — склеить коды разной длины и считать, что их границы очевидны. Читателю может показаться естественным одно разбиение, хотя возможно и другое. Проверь, есть ли несколько способов разделить цифры на коды из таблицы. Если да, поставь разделители или используй заданное правило границ.
При расшифровке иногда берут другую таблицу или забывают правило, которым пользовались при кодировании. Из-за этого числа заменяются не теми символами, хотя само чтение выполнено аккуратно. Перед началом сверь таблицу и способ разделения кодов с теми, по которым запись создавали. Затем проверь, что каждому коду соответствует найденный символ.
Для работы с кодами полезно понимать, что такое информация, сообщение, символ и алфавит: сообщение состоит из символов, которые можно заменять обозначениями. Десятичная запись — один из способов представления данных, а компьютеры также используют двоичное представление. Кодовые таблицы связывают эту тему с кодировками символов в компьютере. Понимание таблиц и правил чтения пригодится и при изучении передачи данных: получатель должен знать, как восстановить отправленное сообщение.
Что называют десятичным кодированием?
Это способ представлять символы или сообщения с помощью чисел, записанных цифрами от 0 до 9. Каждому символу назначают код по выбранному правилу.
Почему одной и той же букве могут соответствовать разные числа?
Код задаётся выбранной таблицей, а разные таблицы могут устанавливать разные соответствия. Поэтому число без указания таблицы не всегда позволяет определить букву.
Как расшифровать последовательность десятичных кодов?
Нужно взять таблицу, по которой сообщение кодировали, определить границы каждого кода и заменить коды соответствующими символами. Символы записывают в том же порядке, в каком идут коды.
Зачем нужны разделители между кодами?
Разделители показывают, где заканчивается один код и начинается следующий. Это особенно нужно, если коды имеют разную длину и при записи подряд их можно разделить по-разному.
Всегда ли запись кодов подряд можно прочитать однозначно?
Нет: при кодах разной длины одна запись может иметь несколько разбиений. Однозначность обеспечивают, например, разделители или коды одинаковой длины.
13. Десятичное кодирование ----------------------------------------------------------