Задание 1: количество информации и объём текста
Учимся считать, сколько памяти занимает текст, — это задание №1 части 1.
Информационный объём текста — это число бит (или байт), нужное, чтобы хранить все его символы при выбранной кодировке.
Что проверяет задание 1
В задании 1 вам дают текст (или число символов) и кодировку, а просят найти объём в битах, байтах или Кбайтах — либо наоборот, по объёму найти количество символов. Иногда сравнивают два варианта кодировки. Это чистая арифметика, и при правильном методе ошибиться почти невозможно.
Теория: алфавит, бит на символ, байты
Ключевые понятия:
- Мощность алфавита
N— сколько различных символов может встретиться (например, 256 для однобайтной кодировки, 32 для русских букв и т.п.). - Информационный вес одного символа
i(бит) связан с мощностью формулойN = 2^i. То естьi— это степень двойки, дающаяN. - Объём текста
I = K · i, гдеK— количество символов.
Запомните таблицу степеней двойки — без неё на экзамене тяжело:
| i (бит) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| N = 2^i | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 |
И единицы измерения: 1 байт = 8 бит, 1 Кбайт = 1024 байт, 1 Мбайт = 1024 Кбайт. Здесь именно 1024, а не 1000 — частая ловушка.
Метод решения за 4 шага
- Найди мощность алфавита
N(часто дана прямо или через «32 буквы», «256 символов»). - Найди вес символа
iпо формулеN = 2^i(по таблице степеней). - Умножь на число символов:
I = K · i(получишь биты). - Переведи в нужные единицы (÷8 — байты, ÷1024 — следующая единица).
Разбор примера
«Сообщение состоит из 180 символов. Используется кодировка, где каждый символ занимает 8 бит. Каков объём сообщения в байтах?»
Шаг за шагом: i = 8 бит дано. Объём в битах: I = 180 · 8 = 1440 бит. В байтах: 1440 ÷ 8 = 180 байт. Проверим расчётом:
# N = 256 символов -> сколько бит на символ?
N = 256
i = 1
while 2**i < N:
i += 1
print("Бит на символ:", i)
symbols = 180
bits = symbols * i
print("Бит всего:", bits)
print("Байт:", bits // 8)
Вывод:
Бит на символ: 8 Бит всего: 1440 Байт: 180
Получилось 180 байт. Запомните: при 8-битной кодировке число байт равно числу символов — это удобная проверка «на глаз».
Обратная задача
«Объём текста — 1,5 Кбайта, каждый символ кодируется 8 битами. Сколько символов в тексте?»
Переведём всё в биты: 1,5 Кбайта = 1,5 · 1024 = 1536 байт = 1536 · 8 = 12288 бит. Делим на вес символа: 12288 ÷ 8 = 1536 символов.
kbytes = 1.5
bits = kbytes * 1024 * 8 # Кбайт -> байт -> бит
i = 8 # бит на символ
symbols = bits / i
print("Символов:", int(symbols))
Вывод:
Символов: 1536
Типичные ошибки
- Считают 1 Кбайт = 1000 байт. Нет: 1024.
- Путают биты и байты — забывают делить (или умножать) на 8.
- Берут не ту мощность алфавита: «русские буквы» — это не всегда 33, читайте условие, там часто прямо задано N.
- Пишут в ответ единицы измерения. В поле — только число.
Итог
- Формулы:
N = 2^iиI = K · i. - 1 байт = 8 бит, 1 Кбайт = 1024 байт, 1 Мбайт = 1024 Кбайт.
- Метод: найти N → найти i → умножить на K → перевести единицы.
- В ответ пишут только число, без «бит»/«байт».