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

1.1.1. Кодирование текстовой информации

"Информатика (базовый уровень)", Угринович Н.Д.

Объяснение темы В оглавлении: 1.1.1.Кодирование текстовой информации

Кратко о теме

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

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

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

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

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

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

Код символа — двоичная последовательность, которой сопоставляется определённый символ в выбранной системе кодирования. Например, кодом может быть последовательность из восьми битов, но длина зависит от способа кодирования. Код не является самой буквой: это её машинное представление. По коду программа определяет, какой знак нужно показать на экране.

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

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

Компьютеру необходимо представить текст числами, потому что его электронная память и процессор оперируют двоичными состояниями. Их удобно описывать нулём и единицей, то есть битами. Буквы сами по себе не являются для компьютера готовыми машинными данными, поэтому текст переводят в последовательность кодов. Когда программа выводит текст на экран, она выполняет обратное преобразование и показывает символы, соответствующие этим кодам.

Длина кодов зависит от того, сколько разных символов нужно различать. Из n бит можно составить 2ⁿ разных последовательностей, поскольку каждый бит имеет два значения. Если алфавит содержит N символов, при кодах одинаковой длины нужно выбрать такое n, чтобы 2ⁿ ≥ N. Например, пяти бит хватает для 32 символов, но четырёх бит — только для 16. Если выбрано слишком мало бит, некоторым символам не хватит уникальных кодов.

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

Для национальных алфавитов создавали отдельные кодировки и кодовые страницы, потому что исходный набор символов не вмещал буквы всех языков. В ограниченное число доступных кодов добавляли нужные знаки, например кириллицу, но разные системы выделяли им разные значения. Если открыть текст с неподходящей кодировкой, программа применит чужую таблицу и покажет вместо букв случайные знаки. Это не обязательно означает, что файл повреждён: иногда достаточно выбрать правильную кодировку.

Unicode создавался как единый стандарт для символов множества письменностей. Он назначает символам номера, чтобы тексты на разных языках можно было согласованно описывать и обменивать. Однако номер символа и способ его записи в памяти — не одно и то же. Для хранения Unicode применяют разные способы кодирования, например UTF-8 и UTF-16, поэтому размер представления конкретного символа может отличаться.

Примеры систем кодирования текстовых символов

ХарактеристикаASCIIКириллические кодовые страницыUnicode
Какие символы охватываетЛатинские буквы, цифры, знаки и служебные символы исходной таблицыКириллицу и другие символы, состав которых зависит от страницыСимволы многих письменностей и дополнительные знаки
Как задаются коды символовСимволам сопоставляются числовые коды исходной таблицыСимволы получают коды по правилам конкретной страницыСимволу назначается номер, который затем кодируется выбранным способом
Почему возможны разные варианты представленияРасширенные варианты добавляли разные символыСтраницы по-разному размещали буквы и знакиСуществуют разные способы записи номеров в памяти, например UTF-8 и UTF-16
Совместимость при обмене текстомНадёжна для общих символов при совпадении таблицТребует, чтобы обе стороны использовали одну страницуОблегчает обмен, если стороны правильно определяют способ кодирования
Типичная причина появления нечитаемого текстаИспользована несовместимая расширенная таблицаТекст прочитан с другой кириллической страницейНеверно определён способ кодирования или нарушено преобразование

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

Разбор задач

Задача 1. Длина кода для алфавита из 32 символов

Нужно найти минимальное число бит для одного символа, если все коды имеют одинаковую длину. Проверим, сколько разных последовательностей дают несколько бит: для n бит это 2ⁿ кодов. Ищем наименьшее n, при котором кодов не меньше 32.

  1. При четырёх битах получаем 2⁴ = 16 кодов — этого недостаточно.
  2. При пяти битах получаем 2⁵ = 32 кода — можно различить все символы.
  3. Меньшее число бит не подходит, потому что даёт меньше 32 вариантов.

Ответ: минимальная длина кода — 5 бит на символ. Здесь предполагается, что каждому символу соответствует отдельный код одинаковой длины.

Задача 2. Кодирование слова по таблице

Пусть задана небольшая таблица: А — 00, Б — 01, В — 10, Г — 11. Закодируем слово «БАГ», а затем восстановим его из последовательности 00 10 01. Важно искать соответствие именно по таблице: число 01 здесь является кодом буквы Б, а не её порядковым номером.

  1. Для слова «БАГ» выписываем коды по очереди: Б — 01, А — 00, Г — 11.
  2. Соединяем коды без изменения порядка: получаем 01 00 11.
  3. Для декодирования 00 10 01 читаем коды по два бита: 00 — А, 10 — В, 01 — Б.

Ответ: «БАГ» кодируется как 01 00 11, а последовательность 00 10 01 обозначает «АВБ». Разделение на группы по два бита возможно, поскольку в условии каждому символу назначен двухбитный код.

Задача 3. Объём текстового файла

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

  1. Размер кода одного символа равен 1 байту.
  2. Вычисляем: 1200 × 1 байт = 1200 байт.
  3. Для перевода в килобайты при 1 Кбайт = 1024 байта получаем примерно 1,17 Кбайт.

Ответ: 1200 байт, или примерно 1,17 Кбайт при принятом условии пересчёта. Это оценка: реальный размер зависит от кодировки, фактической длины кодов, пробелов и служебных данных формата файла.

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

Ошибка — считать, что один символ всегда занимает один байт. Так думают, потому что во многих простых примерах используется именно такое условие, но разные кодировки хранят символы по-разному. Проверяйте, что сказано в задаче или настройках файла: задан ли размер кода и можно ли применять его ко всем символам. Если этого не указано, точный объём по одному числу символов определить нельзя.

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

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

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

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

Для понимания кодирования нужны знания о двоичной системе счисления, бите и байте: именно ими описывают машинные данные. Тема помогает оценивать объём текстовых файлов, если известны число символов и способ их хранения. Она также объясняет, почему текстовые редакторы, веб-страницы и устройства должны согласовывать кодировку. Эти сведения пригодятся при изучении хранения, передачи и обработки информации.

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

  • Компьютер представляет текст последовательностью кодов символов.
  • Кодовая таблица задаёт соответствие между символами и кодами.
  • Для алфавита из N символов длина кода должна позволять получить не менее N различных кодов.
  • Один и тот же текст может по-разному представляться в разных кодировках.
  • Несовпадение кодировок при чтении часто приводит к появлению нечитаемых символов.
  • Unicode предназначен для представления символов множества письменностей.

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

Почему компьютеру недостаточно просто хранить буквы?

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

Как определить, сколько бит нужно для кодирования символа?

Нужно выбрать такое число бит n, чтобы 2ⁿ было не меньше размера алфавита N. Минимальное подходящее n и будет длиной кода при кодировании кодами одинаковой длины.

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

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

Чем кодовая таблица отличается от кодировки?

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

Значит ли Unicode, что каждый символ всегда занимает одинаковое число байтов?

Нет. Unicode задаёт символам единые номера, но для хранения этих номеров существуют разные способы кодирования, например UTF-8 и UTF-16. В них один символ может занимать разное число байтов.

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

1.1.1. Кодирование текстовой информации

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

Учебник

Оглавление →
Предмет
Информатика
Класс
10 класс
Учебник
"Информатика (базовый уровень)", Угринович Н.Д.