Информация и кодирование
Количество информации: текст, изображение, звук
Единицы измерения
- 1 байт = 8 бит.
- 1 Кбайт = 1024 байт = 2¹⁰ байт.
- 1 Мбайт = 1024 Кбайт = 2²⁰ байт.
- 1 Гбайт = 1024 Мбайт = 2³⁰ байт.
В задачах ЕГЭ приставки считаются степенями двойки (1024), если в условии не сказано иначе. Если нужен ответ в Кбайт, переводите в конце: делите байты на 1024, а биты — на 8·1024.
Сколько бит нужно на один символ
Если алфавит содержит N символов и все символы кодируются одинаковым числом бит, то на один символ нужно i бит, где 2^i ≥ N (берётся наименьшее такое целое i).
| Символов в алфавите N | Бит на символ i |
|---|---|
| 2 | 1 |
| 3–4 | 2 |
| 5–8 | 3 |
| 9–16 | 4 |
| 17–32 | 5 |
| 33–64 | 6 |
| 65–128 | 7 |
| 129–256 | 8 |
Объём сообщения из K символов: I = K · i.
Растровое изображение
I = W · H · i, где W и H — ширина и высота в пикселях, i — глубина цвета (бит на пиксель). Число различных цветов N = 2^i.
Пример: изображение 1024 × 768, 256 цветов. 256 = 2⁸, значит i = 8. Пикселей: 1024·768 = 786 432. Объём: 786 432 · 8 бит = 786 432 байт = 768 Кбайт.
Если в задаче есть палитра или заголовок файла, их размер прибавляется отдельно.
Звук
I = f · i · k · t, где f — частота дискретизации (Гц), i — глубина кодирования (бит), k — число каналов (моно — 1, стерео — 2), t — время записи (с).
Пример: частота 16 000 Гц, 16 бит, моно, 10 секунд. I = 16 000 · 16 · 1 · 10 = 2 560 000 бит = 320 000 байт = 312,5 Кбайт.
Передача данных
Время передачи t = I / v, где v — скорость канала. Следите за единицами: скорость обычно в бит/с, а объём — в байтах или Кбайтах. Приведите всё к битам и секундам, потом переводите ответ.
Пароли и идентификаторы (задача № 11)
- Найдите число символов алфавита N и число бит на символ i (
2^i ≥ N). - Объём одного идентификатора из L символов:
L · iбит. - Если записи хранятся целым числом байт, округлите вверх:
ceil(L·i / 8)байт. - Умножьте на число записей.
Пример: пароль из 8 символов, алфавит — 26 заглавных латинских букв и 10 цифр, то есть N = 36, значит i = 6 (2⁵ = 32 < 36 ≤ 64). Один пароль: 8·6 = 48 бит = 6 байт. Для 100 пользователей: 600 байт.
Если к каждому паролю хранятся дополнительные данные, их размер в байтах прибавляется к размеру пароля до умножения на число пользователей.
Проверка в Python
# Число бит на символ для алфавита из N символов
def bits_per_symbol(n):
return (n - 1).bit_length()
print(bits_per_symbol(36)) # 6
print(bits_per_symbol(32)) # 5
# Объём звука в Кбайт
f, i, k, t = 16000, 16, 1, 10
print(f * i * k * t / 8 / 1024) # 312.5Типичные ошибки
- Путают биты и байты: в формулах выше результат получается в битах.
- Округляют число бит на символ вниз вместо округления вверх: для N = 36 нужно 6 бит, а не 5.
- Делят на 1000 вместо 1024.
- Забывают про число каналов в звуке.