"Информатика (изд. "БИНОМ. Лаборатория знаний")", Угринович Н.Д.
Кодирование текстовой информации — это представление символов с помощью числовых и двоичных кодов. Компьютер не хранит буквы как человек: в памяти находятся последовательности нулей и единиц, которым соответствуют символы кодовой таблицы. Главные идеи темы — связь мощности алфавита с длиной двоичного кода, различия кодировок ASCII и Unicode, а также вычисление информационного объёма текста.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Алфавит — конечное множество символов, используемых для записи текста. В него могут входить буквы, цифры, знаки препинания и пробел. Это понятие нужно, чтобы определить, какие знаки вообще требуется закодировать.
Мощность алфавита — количество символов, входящих в алфавит. Например, если в наборе 32 разных знака, его мощность равна 32. По мощности можно узнать, сколько двоичных разрядов понадобится для обозначения любого символа.
Кодирование текста — представление символов текста с помощью числовых или двоичных кодов. Компьютер работает с электрическими состояниями, которые удобно обозначать нулём и единицей, поэтому буквы заменяются последовательностями битов. Так текст можно хранить в памяти и передавать между устройствами.
Кодовая таблица — соответствие между символами алфавита и их кодами. Например, таблица указывает, какой код нужно записать для буквы или знака вопроса. Одинаковая таблица у отправителя и получателя позволяет восстановить исходный текст без подмены символов.
Каждому символу назначают числовой код, потому что память компьютера хранит данные в виде битов, а не букв. Число можно представить в двоичной системе, то есть последовательностью нулей и единиц. Когда программа выводит текст на экран, она по кодовой таблице заменяет эти числа обратно на видимые символы.
Мощность алфавита определяет минимальную длину кода: кодов должно хватить для всех символов. Если используется n двоичных разрядов, первый разряд имеет 2 варианта, второй тоже 2, и так далее. Поэтому общее число комбинаций равно 2n, а минимальное n находят из условия 2n ≥ M, где M — мощность алфавита.
ASCII — ранняя система кодирования с базовым набором из 128 символов, включая латинские буквы, цифры, знаки препинания и служебные символы; для него достаточно 7 бит. Расширенная ASCII использует 8 бит и может содержать 256 знаков, но варианты расширения различались. Национальные кодировки, например KOI8-R и Windows-1251, добавляли кириллицу, однако наборы символов у них были разными.
Unicode создан для единого представления символов разных языков, математических знаков и других письменностей. В школьной модели часто считают, что один символ Unicode занимает 16 бит, то есть 2 байта. Поэтому Unicode охватывает больше знаков, чем однобайтные кодировки, но для простого текста может требовать больше памяти.
Информационный объём сообщения находят умножением количества символов на размер кода одного символа: I = K · i. Здесь K — длина текста в символах, а i — число битов на один символ. Если код каждого знака одинаковой длины, расчёт выполняется напрямую; полученный результат в битах делят на 8 для перевода в байты.
| Система кодирования | Размер кода одного символа | Какие символы охватывает | Особенности применения |
|---|---|---|---|
| ASCII | 7 бит | Латинские буквы, цифры, знаки и управляющие символы | Базовый международный набор, 128 символов |
| Расширенная ASCII | 8 бит | Символы ASCII и дополнительные знаки | До 256 символов, варианты зависят от стандарта |
| KOI8-R | 8 бит | Латиница, кириллица, цифры и знаки | Использовалась главным образом для русского языка |
| Windows-1251 | 8 бит | Кириллица, латиница, цифры и знаки | Распространённая кодировка русскоязычной Windows |
| Unicode | 16 бит в школьной модели | Символы множества языков и письменностей | Единый широкий набор символов |
Таблица помогает выбрать размер кода и понять, какие символы можно записать без замены. Для вычисления объёма сообщения сначала находят число битов на один символ в нужной строке. Нельзя автоматически считать любой текст однобайтным: это зависит от конкретной кодировки.
Задача 1. Алфавит содержит 32 символа. Сколько двоичных разрядов необходимо для кодирования одного символа? Нужно подобрать наименьшую длину кода, которой хватит для всех знаков.
Ответ: 5 двоичных разрядов.
Задача 2. Сообщение состоит из 40 символов, каждый кодируется восемью битами. Определим информационный объём сначала в битах, а затем в байтах.
Ответ: 320 бит, или 40 байт.
Задача 3. Текст содержит 120 символов и кодируется в Unicode шестнадцатью битами на символ. Сравним его объём с объёмом того же текста в восьмибитной кодировке.
Ответ: Unicode — 1920 бит, 240 байт; восьмибитная кодировка — 960 бит, 120 байт. Больший объём Unicode объясняется вдвое большей длиной кода одного символа.
Путают мощность алфавита с длиной текста. Мощность показывает число возможных символов, а длина — сколько знаков встретилось в конкретном сообщении. Проверьте себя вопросом: считаю я весь набор знаков или один текст?
Берут число разрядов, равное мощности алфавита. Разряды не нужно считать по одному на символ: проверяют степени двойки и выбирают минимальное n, для которого 2n не меньше мощности. Полезно выписать две соседние степени, чтобы убедиться в минимальности.
Считают, что один символ всегда занимает один байт. Размер кода задаётся кодировкой: символ может занимать 7, 8 или 16 бит и другое число в современных форматах. Перед расчётом найдите в условии количество битов на символ.
Забывают переводить биты в байты или неверно округляют результат. Используйте правило 8 бит = 1 байт и делите, а не умножайте, когда переходите от битов к байтам. Если деление не даёт целого числа, проверьте условие и способ округления, а не округляйте автоматически.
До изучения темы нужны двоичная система счисления, единицы измерения информации и правило перевода битов в байты. Без них трудно понять число комбинаций и правильно вычислять объём сообщения.
Дальше эти знания пригодятся при изучении хранения текстовых файлов, кодировок Unicode и передачи данных по компьютерным сетям. От кодировки зависит, как файл будет прочитан другой программой.
Тот же общий принцип используется для представления чисел, изображений и звука: объект заменяют кодами, удобными для хранения и обработки компьютером. Меняются наборы данных и способы кодирования, но идея соответствия остаётся.
Почему один и тот же текст может занимать разный объём в разных кодировках?
Кодировки могут использовать разное количество битов для одного символа и поддерживать разные наборы знаков. Поэтому при одинаковом числе символов объём текста зависит от выбранной кодировки.
Зачем нужна кодовая таблица?
Кодовая таблица показывает, какой числовой или двоичный код соответствует каждому символу. Благодаря ей компьютер правильно сохраняет, передаёт и отображает текст.
Почему для 256 символов достаточно восьми бит?
Каждый бит имеет два значения, поэтому 8 бит дают 2⁸ = 256 различных комбинаций. Этого достаточно, чтобы пронумеровать 256 символов.
Чем Unicode отличается от ASCII?
ASCII содержит небольшой набор символов, главным образом латинские буквы, цифры и знаки. Unicode предназначен для символов множества языков и потому охватывает гораздо больше знаков.
Как узнать информационный объём текстового сообщения?
Нужно умножить количество символов на число битов, используемых для кодирования одного символа. Если результат требуется в байтах, его делят на 8.
2.1. Кодирование текстовой информации