- Объяснять, что такое кодовая таблица, кодировать и декодировать слова с помощью кодов 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 байт) |
|---|---|---|
| пробел | 32 | 00100000 |
| 0 | 48 | 00110000 |
| 9 | 57 | 00111001 |
| A | 65 | 01000001 |
| B | 66 | 01000010 |
| Z | 90 | 01011010 |
| a | 97 | 01100001 |
| z | 122 | 01111010 |
1) Найдите слово, коды ASCII которого 73 78 70 79.
2) Код буквы «A» равен 65. Каков код буквы «K»?
3) Какое слово записано двоичными кодами 01000010 01001001 01010100?
4) Код буквы «d» равен 100. Найдите коды букв «D» и «h».
Показать решениеСкрыть решение
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.
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
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 байта.
| Кодировка | Один символ | Число символов |
|---|---|---|
| ASCII | 8 бит = 1 байт | 2⁸ = 256 (стандартный ASCII — 128) |
| UNICODE (в школьных задачах) | 16 бит = 2 байта | 2¹⁶ = 65 536 |
| UTF-8 | 1–4 байта | все символы UNICODE |
- Iинформационный объём текста
- Kчисло всех символов текста: буквы, цифры, пробелы, знаки препинания
Это частный случай формулы I = K · i: в ASCII i = 8, в UNICODE i = 16. Один и тот же текст в UNICODE занимает вдвое больше места, чем в ASCII.
- 1Посчитай буквы
Посчитай буквы в каждом слове и сложи.
- 2Добавь пробелы
Если между словами по одному пробелу, пробелов на один меньше, чем слов.
- 3Не забудь знаки препинания
Точки, запятые, вопросительные и восклицательные знаки, кавычки, тире, цифры — всё это символы.
- 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 байта
Показать решениеСкрыть решение
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.
В текстовом процессоре набрано предложение «Small steps lead to big results.», символы закодированы в UNICODE. Айсель выделила полужирным все слова объёмом 80 бит, а слово объёмом 64 бита — курсивом. Какие слова стали полужирными, а какое — курсивным? (Точка к слову не относится.)
Показать решениеСкрыть решение
80 бит : 16 = 5 букв ⇒ полужирными станут Small и steps.
64 бита : 16 = 4 буквы ⇒ курсивом станет lead.
Остальные слова (to — 32 бита, big — 48 бит, results — 112 бит) не меняются.
Установите соответствие между словами, закодированными в 32-символьном алфавите, и их информационным объёмом.
1. data
2. python
3. internet
a. 5 байт
b. 30 бит
c. 20 бит
d. 2,5 байта
e. 40 бит
Показать решениеСкрыть решение
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.
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 байт. Сколько символов в тексте?
Показать решениеСкрыть решение
Короче: 16 · 64 = 2¹⁰, значит, I = 40 · 2¹⁰ · 2 байт = 80 Кбайт.
2) Каждый символ был 2 байта, а стал 1 байт, то есть уменьшился на 1 байт: 480 байт : 1 байт = 480 символов.
- iчисло бит на один символ
- Iобъём текстовой части (бит); объём рисунков сначала вычитают
- Kчисло символов
- Nмощность алфавита
Ключ к обратным задачам: сначала выдели объём текста, потом раздели на число символов.
В 20-страничном документе на каждой из первых 4 страниц только рисунок объёмом 16 Кбайт, а на каждой из остальных страниц — текст из 32 строк по 64 символа. Информационный объём документа — 88 Кбайт. Определите мощность алфавита, которым записан текст.
A) 32 B) 64 C) 6 D) 128 E) 256
Показать решениеСкрыть решение
Страниц с текстом: 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 бит/с?
Показать решениеСкрыть решение
Одна страница: 60 · 16 = 960 бит ⇒ 14 400 : 960 = 15 страниц.
2) I = 2 · 30 · 64 · 8 = 30 720 бит; t = 30 720 : 256 = 120 с = 2 мин.
В переменной s записано предложение. Выведите его информационный объём в битах в кодировке UNICODE (16 бит на символ).
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.