Перейти к содержанию
Educora
Средний8–10 классы25 мин11 / 59

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

Как компьютер превращает буквы в числа: кодовые таблицы ASCII и UNICODE, условия заданий DİM (ASCII — 1 байт, UNICODE — 2 байта, пробелы тоже считаются), объём текста и документа, мощность алфавита и передача текста по каналу — с решёнными задачами в стиле экзамена.

Проверь себя
В этом уроке ты узнаешь
  • Объяснять, что такое кодовая таблица, кодировать и декодировать слова с помощью кодов ASCII
  • Вычислять объём текста в кодировках ASCII (1 байт) и UNICODE (2 байта), учитывая пробелы и знаки препинания
  • Находить мощность алфавита по объёму документа, а число страниц — по данным о передаче

Когда ты набираешь на клавиатуре «Salam», компьютер запоминает не буквы, а числа: 83, 97, 108, 97, 109. На экране снова видны буквы, потому что программа рисует знак, соответствующий каждому числу. Но иногда в тексте от друга вместо азербайджанской буквы «ə» появляются странные значки вроде «É™». В этом уроке разберёмся, как компьютер кодирует текст и откуда берутся такие ошибки.

В уроке «Измерение информации: бит, байт и единицы измерения» мы изучили формулу I = K · i, а теперь применим её к настоящим текстам. Тема часто встречается на вступительном экзамене: в четырёх вступительных экзаменах 2025–2026 годов пять заданий касались кодирования текста (объёмы в ASCII и UNICODE, мощность алфавита, слова в 64-символьном алфавите, передача текста в UNICODE по каналу), а в одном задании на обработку текста слова выбирались по их объёму в UNICODE.

Кодовая таблица: каждому символу — число

Определение
Кодирование

Преобразование информации из одной системы знаков в другую по определённому правилу. Закодировать текст — значит заменить каждый символ двоичным кодом; обратное действие называют декодированием.

Определение
Кодовая таблица

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

ASCII: один символ — один байт

ASCII (Американский стандартный код для обмена информацией) создан в 1963 году. В нём 128 кодов (0–127): 0–31 — управляющие символы (например, переход на новую строку), 32 — пробел, 48–57 — цифры, 65–90 — заглавные, 97–122 — строчные латинские буквы. В компьютере каждый символ ASCII занимает 1 байт (8 бит). Коды 128–255 использовали для национальных букв: для кириллицы появились таблицы Windows-1251 и KOI8-R, для турецкого языка — Windows-1254.

СимволДесятичный кодДвоичный код (1 байт)
пробел3200100000
04800110000
95700111001
A6501000001
B6601000010
Z9001011010
a9701100001
z12201111010
Фрагмент таблицы ASCII. Коды букв и цифр идут подряд.
Кодирование и декодирование

1) Найдите слово, коды ASCII которого 73 78 70 79.
2) Код буквы «A» равен 65. Каков код буквы «K»?
3) Какое слово записано двоичными кодами 01000010 01001001 01010100?
4) Код буквы «d» равен 100. Найдите коды букв «D» и «h».

Показать решение
1) 73 − 65 = 8 ⇒ 9-я буква латинского алфавита, I; 78 ⇒ N; 70 ⇒ F; 79 ⇒ O. Слово: INFO.
2) K — 11-я буква латинского алфавита: 65 + 10 = 75.
3) 01000010 = 64 + 2 = 66 ⇒ B; 01001001 = 64 + 8 + 1 = 73 ⇒ I; 01010100 = 64 + 16 + 4 = 84 ⇒ T. Слово: BIT.
4) «D» = 100 − 32 = 68; «h» стоит на 4 буквы дальше «d»: 100 + 4 = 104.
Python
word = "INFO"
print([ord(c) for c in word])
print(chr(66) + chr(73) + chr(84))
print(ord("a") - ord("A"), ord("ə"))
▸ Ожидаемый результат
[73, 78, 70, 79]
BIT
32 601
В Python ord() возвращает код символа, а chr() — символ по коду. Код буквы «ə» — 601: её нет в ASCII, она есть только в UNICODE.

UNICODE: все языки в одной таблице

8-битные таблицы разных стран не совпадали: один и тот же код в одной таблице означал одну букву, а в другой — другую. Поэтому в 1991 году был создан стандарт UNICODE. В нём отдельный номер получают буквы всех письменностей мира, математические знаки и даже эмодзи — сегодня более 150 тысяч символов. Первые 128 кодов совпадают с ASCII: «A» по-прежнему 65, а номер буквы «ə» — U+0259, то есть 601.

В школьных задачах и заданиях DİM «UNICODE» означает 16 бит (2 байта) на символ: 2¹⁶ = 65 536 различных символов. Это соответствует основному случаю кодировки UTF-16. В реальных файлах и в интернете чаще всего используют UTF-8: в ней символ занимает от 1 до 4 байт — латинские буквы 1 байт, особые азербайджанские буквы (ə, ş, ç, ğ, ı, ö, ü) и кириллица — 2, знак € и большинство китайских иероглифов — 3, эмодзи — 4 байта.

КодировкаОдин символЧисло символов
ASCII8 бит = 1 байт2⁸ = 256 (стандартный ASCII — 128)
UNICODE (в школьных задачах)16 бит = 2 байта2¹⁶ = 65 536
UTF-81–4 байтавсе символы UNICODE
На экзамене, если в условии не сказано иное: ASCII — 1 байт, UNICODE — 2 байта.
I = K · 8 бит (ASCII) I = K · 16 бит (UNICODE)
где:
  • Iинформационный объём текста
  • Kчисло всех символов текста: буквы, цифры, пробелы, знаки препинания

Это частный случай формулы I = K · i: в ASCII i = 8, в UNICODE i = 16. Один и тот же текст в UNICODE занимает вдвое больше места, чем в ASCII.

  1. 1
    Посчитай буквы

    Посчитай буквы в каждом слове и сложи.

  2. 2
    Добавь пробелы

    Если между словами по одному пробелу, пробелов на один меньше, чем слов.

  3. 3
    Не забудь знаки препинания

    Точки, запятые, вопросительные и восклицательные знаки, кавычки, тире, цифры — всё это символы.

  4. 4
    Умножь и переведи

    Умножь K на 8 (ASCII) или 16 (UNICODE) бит, затем переведи в нужные единицы.

Объём предложения: соответствие

Установите соответствие между системами кодирования и информационным объёмом предложения
Small steps lead to big results.
(между словами один пробел).
1. UNICODE
2. ASCII
a. 32 байта
b. 2⁹ бит
c. 64 бита
d. 2⁸ бит
e. 64 байта

Показать решение
Буквы: Small (5) + steps (5) + lead (4) + to (2) + big (3) + results (7) = 26; пробелы: 6 слов − 1 = 5; точка: 1. Всего K = 26 + 5 + 1 = 32 символа.
1. UNICODE: 32 · 2 = 64 байта = 512 бит = 2⁹ бит ⇒ b, e.
2. ASCII: 32 · 1 = 32 байта = 256 бит = 2⁸ бит ⇒ a, d.
«64 бита» (c) не подходит ни к одному пункту: это ответ тех, кто путает 64 байта и 64 бита.
Ответ: 1 – b, e; 2 – a, d.
Выбираем слова по объёму в UNICODE

В текстовом процессоре набрано предложение «Small steps lead to big results.», символы закодированы в UNICODE. Айсель выделила полужирным все слова объёмом 80 бит, а слово объёмом 64 бита — курсивом. Какие слова стали полужирными, а какое — курсивным? (Точка к слову не относится.)

Показать решение
В UNICODE одна буква — 16 бит.
80 бит : 16 = 5 букв ⇒ полужирными станут Small и steps.
64 бита : 16 = 4 буквы ⇒ курсивом станет lead.
Остальные слова (to — 32 бита, big — 48 бит, results — 112 бит) не меняются.
Слова в 32-символьном алфавите

Установите соответствие между словами, закодированными в 32-символьном алфавите, и их информационным объёмом.
1. data
2. python
3. internet
a. 5 байт
b. 30 бит
c. 20 бит
d. 2,5 байта
e. 40 бит

Показать решение
32 = 2⁵ ⇒ один символ — 5 бит.
1. data: 4 · 5 = 20 бит = 2,5 байта ⇒ c, d.
2. python: 6 · 5 = 30 бит ⇒ b.
3. internet: 8 · 5 = 40 бит = 5 байт ⇒ a, e.
Ответ: 1 – c, d; 2 – b; 3 – a, e.
Python
s = "Small steps lead to big results."
print(len(s))                    # spaces and the dot included
print(len(s) * 8, len(s) * 16)   # bits in ASCII and in UNICODE
for w in ["Salam", "Gəncə", "Баку", "€"]:
    print(w, len(w.encode("utf-8")))   # real size in UTF-8, bytes
▸ Ожидаемый результат
32
256 512
Salam 5
Gəncə 7
Баку 8
€ 3
len() считает символы вместе с пробелами и точкой. Последние строки показывают реальный размер в UTF-8: слово «Gəncə» занимает 7 байт, потому что каждая из двух букв «ə» занимает 2 байта.

Документы, мощность алфавита и передача

В документе из нескольких страниц число символов K = страницы · строки · символы в строке. В экзаменационных задачах числа обычно являются степенями двойки (32 строки, 64 символа), поэтому удобно считать через показатели. И наоборот: если объём известен, можно найти число бит на символ и мощность алфавита.

Объём документа

1) В тексте 16 страниц, на каждой 40 строк по 64 символа; текст закодирован в UNICODE. Сколько Кбайт он занимает?
2) Текст перекодировали из UNICODE в ASCII, и его объём уменьшился на 480 байт. Сколько символов в тексте?

Показать решение
1) K = 16 · 40 · 64 = 40 960 символов; I = 40 960 · 2 = 81 920 байт = 81 920 : 1024 = 80 Кбайт.
Короче: 16 · 64 = 2¹⁰, значит, I = 40 · 2¹⁰ · 2 байт = 80 Кбайт.
2) Каждый символ был 2 байта, а стал 1 байт, то есть уменьшился на 1 байт: 480 байт : 1 байт = 480 символов.
i = I / K, N = 2ⁱi = I / K, N = 2ⁱ
где:
  • iчисло бит на один символ
  • Iобъём текстовой части (бит); объём рисунков сначала вычитают
  • Kчисло символов
  • Nмощность алфавита

Ключ к обратным задачам: сначала выдели объём текста, потом раздели на число символов.

От документа к мощности алфавита

В 20-страничном документе на каждой из первых 4 страниц только рисунок объёмом 16 Кбайт, а на каждой из остальных страниц — текст из 32 строк по 64 символа. Информационный объём документа — 88 Кбайт. Определите мощность алфавита, которым записан текст.
A) 32 B) 64 C) 6 D) 128 E) 256

Показать решение
Рисунки: 4 · 16 = 64 Кбайт ⇒ текст: 88 − 64 = 24 Кбайт = 24 · 2¹³ бит.
Страниц с текстом: 20 − 4 = 16 = 2⁴; K = 2⁴ · 2⁵ · 2⁶ = 2¹⁵ символов.
i = 24 · 2¹³ : 2¹⁵ = 24 : 4 = 6 бит ⇒ N = 2⁶ = 64 (B).
Вариант C — это само i, а спрашивают N.

Когда текст передаётся по каналу связи, работает формула I = v · t из урока «Измерение информации: бит, байт и единицы измерения»: объём текста в битах = скорость · время.

Передача текста по каналу

1) Текст в UNICODE, в котором на каждой странице 60 символов, передаётся по каналу со скоростью 48 бит/с за 5 минут. Сколько в нём страниц?
2) В ASCII-тексте 2 страницы, на каждой 30 строк по 64 символа. За сколько минут его передадут со скоростью 256 бит/с?

Показать решение
1) t = 5 · 60 = 300 с; I = v · t = 48 · 300 = 14 400 бит.
Одна страница: 60 · 16 = 960 бит ⇒ 14 400 : 960 = 15 страниц.
2) I = 2 · 30 · 64 · 8 = 30 720 бит; t = 30 720 : 256 = 120 с = 2 мин.
Задание

В переменной s записано предложение. Выведите его информационный объём в битах в кодировке UNICODE (16 бит на символ).

Задание · Python
s = "Bakı is the capital of Azerbaijan."
# print the UNICODE volume in bits
▸ Ожидаемый результат
544

В следующем уроке, «Компьютерная графика: кодирование растровых и векторных изображений», узнаем, как кодируются изображения; формула N = 2ⁱ играет главную роль и там.

Главное

  • При кодировании текста каждый символ заменяется числом из кодовой таблицы; в ASCII «A» = 65, «a» = 97, пробел = 32.
  • Символ занимает 1 байт (8 бит) в ASCII и, в школьных задачах, 2 байта (16 бит) в UNICODE.
  • При подсчёте объёма текста учитываются также пробелы, знаки препинания и цифры.
  • В N-символьном алфавите один символ — это i бит (N = 2ⁱ): 64 символа — 6 бит, 32 символа — 5 бит.
  • В обратных задачах сначала вычти объём рисунков, затем найди i = I / K и вычисли N = 2ⁱ.
  • В реальных файлах используют UTF-8: латинская буква — 1 байт, «ə» и кириллица — 2 байта, эмодзи — 4 байта.

Проверь себя

Вопросов: 12. Каждый правильный ответ приносит XP.

1 / 12
Сколько бит занимает один символ в кодировке UNICODE в заданиях DİM?