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

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

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

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

Кратко о теме

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

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

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

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

Алфавит — конечный набор символов, которыми можно записывать сообщения. Это могут быть буквы, цифры, знаки препинания и пробел. Размер алфавита определяет, сколько разных обозначений требуется различать при кодировании.

Мощность алфавита — количество различных символов в нём; обычно её обозначают N. Для кода длиной i бит существует 2ⁱ разных комбинаций. Значит, чем больше алфавит, тем больше бит может понадобиться, чтобы присвоить отдельный код каждому его символу.

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

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

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

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

Чтобы подобрать минимальную длину фиксированного кода для алфавита из N символов, ищут наименьшее целое i, при котором 2ⁱ ≥ N. Основание 2 появляется потому, что каждый бит имеет два значения: 0 или 1. Например, два бита дают четыре сочетания, а три — восемь, поэтому для восьми символов достаточно трёх бит.

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

ASCII и Unicode решают задачу сопоставления символам кодов, но различаются охватом. Первоначальная таблица ASCII включает 128 символов: латинские буквы, цифры, знаки и управляющие коды; позднее использовались расширенные варианты, зависящие от системы. Unicode создан, чтобы описывать знаки множества языков, а способы его хранения, например UTF-8 и UTF-16, могут использовать разное число байтов.

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

Сравнение кодировок ASCII и Unicode

ХарактеристикаASCIIUnicode
Какие символы охватываетЛатинские буквы, цифры, распространённые знаки и управляющие кодыСимволы многих языков, письменностей и наборов знаков
Сколько символов можно представитьВ исходной версии — 128; расширенные варианты зависят от конкретной таблицыБолее миллиона возможных кодовых позиций; число назначенных символов меньше и меняется
Как кодируются символыИсходная таблица использует 7 бит; часто данные записывают в байтеКодовые позиции хранят форматами UTF-8, UTF-16, UTF-32 и другими
Совместимость и применениеПодходит для базовых латинских текстов; расширения могут различатьсяШироко применяется для текстов на разных языках; важен выбор подходящего формата хранения

Сначала сравните охват символов: ASCII удобен для простого латинского текста, а Unicode нужен для многоязычного. Затем обратите внимание на способ хранения: Unicode — это не одна фиксированная длина кода, а стандарт с несколькими форматами кодирования. При разборе файла выясняйте не только набор символов, но и используемый формат.

Разбор задач

Задача 1. Алфавит содержит 8 символов. Сколько бит достаточно для кодирования одного символа? Нужно найти наименьшую длину кода, при которой число двоичных комбинаций не меньше мощности алфавита.

  1. Проверим длину 2 бита: число кодов равно 2² = 4, этого недостаточно для восьми символов.
  2. Проверим длину 3 бита: 2³ = 8, значит, всем символам можно назначить разные коды.
  3. Меньшую длину уже проверили, поэтому 3 бита — минимальное значение.

Ответ: для одного символа достаточно 3 бит.

Задача 2. Текст содержит 120 символов, каждый кодируется фиксированным кодом длиной 8 бит. Найдём объём сообщения сначала в битах, затем в байтах. Поскольку код имеет одинаковую длину, достаточно умножить число символов на число бит в одном коде.

  1. Вычислим общий объём: 120 × 8 = 960 бит.
  2. Переведём биты в байты: в одном байте 8 бит, поэтому 960 ÷ 8 = 120 байт.
  3. Проверим результат: каждый символ занимает ровно один байт, значит, 120 символов занимают 120 байт.

Ответ: 960 бит, или 120 байт.

Задача 3. Для алфавита из 50 символов нужно закодировать сообщение из 300 символов кодами одинаковой минимальной длины. Сначала найдём длину кода, а затем объём всего сообщения. При переводе в байты учитываем, что 1 байт равен 8 битам.

  1. Проверим степени двойки: 2⁵ = 32, этого мало, а 2⁶ = 64, этого достаточно для 50 символов. Значит, на символ нужно не менее 6 бит.
  2. Вычислим объём сообщения: 300 × 6 = 1800 бит.
  3. Разделим на 8: 1800 ÷ 8 = 225 байт.

Ответ: код одного символа имеет длину 6 бит, сообщение занимает 1800 бит, или 225 байт.

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

Иногда считают, что число бит на символ равно мощности алфавита. Это смешение количества символов и длины кода: число бит выбирают по степеням двойки, чтобы комбинаций хватило на все знаки. Для проверки подставьте найденную длину i в условие 2ⁱ ≥ N и убедитесь, что для i − 1 условие ещё не выполняется.

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

При вычислении объёма забывают, что 1 байт равен 8 битам, или делят не в ту сторону. Переводя биты в байты, нужно разделить число бит на 8, а байты в биты — умножить на 8. Полезно выполнить обратную проверку: умножить полученное число байтов на 8.

Ещё одна ошибка — считать, что любой текст с одинаковым числом символов занимает одинаковое место. В разных кодировках символы могут иметь разную длину, а некоторые форматы Unicode используют переменное число байтов. Перед расчётом уточните кодировку и способ представления символов; вывод о равном объёме верен только при одинаковой длине кода.

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

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

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

  • Каждому символу при кодировании сопоставляется определённый код.
  • Для кода длиной i бит можно представить не более 2ⁱ различных символов.
  • Минимальную длину фиксированного кода выбирают так, чтобы 2ⁱ было не меньше мощности алфавита.
  • Кодовая таблица задаёт соответствие между символами и кодами.
  • ASCII охватывает ограниченный набор символов, а Unicode предназначен для представления символов многих языков.
  • При чтении текста кодировка должна быть согласована с той, в которой текст был записан.

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

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

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

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

Нужно найти наименьшее целое число i, для которого 2ⁱ не меньше количества символов в алфавите. Например, для 50 символов достаточно 6 бит, потому что 2⁶ = 64, а 2⁵ = 32.

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

Алфавит — это набор символов, которыми можно записывать сообщения. Кодовая таблица задаёт соответствие между каждым таким символом и его кодом.

Чем ASCII отличается от Unicode?

ASCII первоначально описывает небольшой набор символов, в основном латинские буквы, цифры и знаки. Unicode предназначен для кодирования символов множества языков и систем письма; на практике его символы хранят разными способами, например UTF-8.

Почему текст иногда отображается нечитаемыми символами?

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

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

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

Учебник

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