"Информатика", Поляков К.Ю., Еремин Е.А.
Компьютер хранит текст как последовательность числовых кодов, а не как буквы на экране. Чтобы каждой букве, цифре или знаку соответствовало нужное число, используют кодировочную таблицу. Число битов на символ зависит от размера алфавита и выбранного способа кодирования. Поэтому одинаковые по длине тексты могут занимать разный объём памяти. Понимание кодировок помогает вычислять размер файла и объяснять, почему при несовпадении настроек вместо букв появляются непонятные знаки.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Кодирование текста — представление символов текста кодами, чтобы компьютер мог их хранить и обрабатывать. Экран показывает буквы, но в памяти компьютера им соответствуют числа, записанные в двоичном виде. Такая замена позволяет устройству работать с текстом как с данными.
Алфавит — множество символов, используемых для записи сообщений. Его мощность — количество символов в этом множестве. Это понятие помогает определить, сколько разных кодов должно быть доступно для записи текста.
Кодировочная таблица — соответствие между символами алфавита и их числовыми или двоичными кодами. Например, таблица задаёт, какой код компьютер должен сохранить для конкретной буквы. Благодаря общей таблице разные программы могут одинаково понимать записанные данные.
Информационный вес символа — количество битов, необходимое для кодирования одного символа при равномерном кодировании. Равномерное означает, что каждому символу выделяется одинаковое число битов. Вес позволяет оценить, сколько места потребуется для всего сообщения.
Компьютер заменяет символы кодами, потому что его память и процессор работают с числами, представленными нулями и единицами. Кодировочная таблица связывает каждому символу определённую комбинацию битов. При чтении программы разбирают эти комбинации и по той же таблице восстанавливают символы. Если соответствие заранее согласовано, сообщение можно передать другому устройству без потери смысла.
Количество возможных комбинаций из i битов равно 2ⁱ: каждый бит может быть нулём или единицей. Чтобы закодировать все N символов алфавита, комбинаций должно хватать, поэтому требуется 2ⁱ ≥ N. Выбирают наименьшее целое i, удовлетворяющее этому условию. Например, если символов больше 8, но не больше 16, понадобится 4 бита: трёх битов дают только 8 комбинаций.
При равномерном кодировании вес каждого символа равен i битам. Если сообщение содержит K символов, его информационный объём находят умножением: K × i битов. Чтобы получить байты, результат в битах делят на 8, ведь один байт содержит 8 битов. Такой расчёт предполагает, что все символы кодируются кодами одинаковой длины и не учитывает возможные дополнительные данные файла.
ASCII — кодировка с ограниченным набором символов, в котором есть латинские буквы, цифры и знаки. Этого набора недостаточно для записи всех алфавитов мира и множества специальных символов. Unicode создан как универсальная система обозначения символов разных языков. При этом конкретное представление Unicode может использовать разное число байтов для разных символов, поэтому нельзя считать, что любой символ всегда занимает одинаковое место.
При чтении файла программа должна знать, какому символу соответствует каждый сохранённый код. Если файл записан в одной кодировке, а открыт с настройками другой, числа будут истолкованы по иной таблице. В результате вместо ожидаемых букв могут появиться посторонние знаки. Совпадение кодировки при записи и чтении позволяет правильно восстановить исходное сообщение.
| Элемент | Что означает | Основная характеристика или формула | Пример |
|---|---|---|---|
| Алфавит | Набор символов для записи сообщений | Состоит из допустимых символов | Цифры от 0 до 9 |
| Мощность алфавита | Количество символов в алфавите | N — число символов | У цифр мощность N = 10 |
| Информационный вес символа | Число битов на один символ | Минимальное i: 2ⁱ ≥ N | Для 16 символов нужно 4 бита |
| Объём сообщения | Общий объём кодов всех символов | K × i битов; 8 бит = 1 байт | 100 символов по 8 бит — 800 бит |
| ASCII | Кодировка ограниченного набора знаков | Латинские буквы, цифры и знаки | Английский текст и цифры |
| Unicode | Система кодирования символов разных языков | Поддерживает множество алфавитов и знаков | Кириллица и специальные символы |
Сначала по таблице выясни, что именно требуется найти: число символов алфавита, вес одного символа или объём всего сообщения. Затем проверь, в каких единицах дан ответ, и при необходимости переведи биты в байты. Строки про ASCII и Unicode помогут сопоставить назначение этих кодировок.
Задача 1. Алфавит содержит 16 символов. Определить минимальное количество битов для кодирования одного символа. Нужно найти такое число битов i, чтобы разных двоичных комбинаций хватило на все символы. Проверяем степени двойки и выбираем минимальную подходящую.
Ответ: минимальный вес символа — 4 бита.
Задача 2. В сообщении 120 символов, каждый кодируется 8 битами. Найти информационный объём в битах и байтах. Сначала вычислим объём всех кодов в битах, а затем переведём его в байты. Для перевода используем соотношение 1 байт = 8 бит.
Ответ: 960 бит, или 120 байт.
Задача 3. Сообщение занимает 240 байт при кодировании одним байтом на символ. Сколько в нём символов и сколько оно будет занимать при кодировке по 2 байта на символ? Сначала найдём количество символов по исходному объёму. Затем оставим эту длину текста прежней и пересчитаем объём с новым весом символа.
Ответ: сообщение содержит 240 символов и будет занимать 480 байт.
Мощность алфавита путают с числом символов в сообщении. Это разные величины: мощность описывает весь набор допустимых знаков, а длина показывает, сколько знаков использовано в конкретном тексте. Чтобы проверить себя, отдельно выпиши N для алфавита и K для сообщения.
Иногда вычисляют логарифм или округляют результат вниз, хотя выбранное число битов должно обеспечить не меньше N кодов. Ошибка возникает, если забыть проверить степени двойки. Подставь найденное i в условие 2ⁱ ≥ N и убедись, что при i − 1 условие уже не выполняется.
Нельзя считать, что каждый символ всегда занимает ровно один байт. Размер зависит от кодировки, а некоторые способы кодирования используют разное число байтов для разных символов. Перед расчётом выясни, какой вес символа задан в условии, и не переноси это значение на другие кодировки без основания.
При переводе единиц можно забыть, что 1 байт = 8 бит, или перепутать объём с количеством символов. Биты переводят в байты делением на 8, а байты — в биты умножением на 8. В конце проверь единицу ответа и то, соответствует ли она вопросу задачи.
Для расчётов нужны двоичная система счисления, степени двойки и единицы измерения информации. Эти знания помогают определить число битов на символ и перевести объём между битами и байтами. Тема пригодится при оценке размера текстовых файлов, выборе кодировки и поиске причины искажённых букв. Представление чисел, изображений и звука в памяти компьютера также основано на кодировании информации, хотя для них используют другие правила и наборы данных.
Почему букве нельзя сразу сопоставить её порядковый номер в алфавите?
Можно использовать порядковый номер, но одного такого правила недостаточно для всех текстов: алфавиты и знаки бывают разными. Компьютеру нужна договорённость о том, какое именно число соответствует каждому символу, — её задаёт кодировочная таблица.
Как понять, сколько битов нужно для кодирования одного символа?
Нужно знать мощность алфавита N и найти наименьшее целое i, для которого 2ⁱ ≥ N. Например, для 16 символов достаточно 4 битов, потому что 2⁴ = 16.
Почему текст из одинакового числа символов может занимать разный объём?
В разных кодировках один символ может занимать разное количество битов или байтов. Поэтому объём зависит не только от длины текста, но и от выбранной кодировки.
Чем ASCII отличается от Unicode?
ASCII кодирует ограниченный набор символов, главным образом латинские буквы, цифры и знаки. Unicode предназначен для символов множества языков и специальных знаков; конкретный объём зависит от способа кодирования Unicode.
Почему вместо букв иногда отображаются наборы непонятных символов?
Чаще всего файл прочитан не в той кодировке, в которой его записали. Программа сопоставляет числовые коды другим символам, поэтому текст выглядит искажённым.
§ 11. Кодирование текстов