Задание 7 · Объём графической и звуковой информации
Практика и итог
Вся тема на одной странице: как решилась задача темы, главное из подтем, порядок решения и частые ошибки.
Одна задача — вся тема
Задача темы — сколько секунд передаётся пакет из 50 снимков 1024 × 768 с палитрой из 3000 цветов — прошла через подтемы, и каждая добавляла к решению новый шаг. Пролистай черновик: точками отмечены строки, которых не было после предыдущей подтемы.
- Подтема 1, «Биты и длина кода»: длина кода — наименьшее i: 2ⁱ ≥ N. Точками отмечены новые строки.
- Подтема 2, «Изображение»: объём снимка: w · h · i.
- Подтема 3, «Сжатие и заголовки»: сжатие на p % — осталось (100 − p) %.
- Подтема 5, «Передача»: время передачи: t = V / v. Ответ задачи темы — 235.
Задача не менялась — росла цепочка: длина кода, объём снимка, его сжатие и время передачи. Подтема 4 считает объём звука той же цепочкой: вместо пикселей — отсчёты, V = f · t · c · i.
Карта темы
Каждая подтема дала одну формулу или правило, и любое решение собирается из них. Сверху — путь от условия к ответу, ниже — по блоку на подтему. Заголовок блока ведёт на подтему.
- Элементыпиксели или отсчёты: сколько их
- Объёмэлементы × биты одного
- Ответдействия, единицы, округление
1Биты и длина кода
- длина коданаименьшее i, при котором 2ⁱ ≥ N
- 1 Кбайт2¹⁰ байт = 2¹³ бит
- 1 Мбайт2²³ бит
2Изображение
- V = w · h · iобъём в битах
- наибольшая глубинапамять / пиксели, округлить вниз
- dpi × 2пикселей в 4 раза больше
3Сжатие и заголовки
- сжатие на p %осталось (100 − p) % объёма
- заголовокприбавляют к каждому файлу
- исходный объёмдействия в обратном порядке
4Звук
- V = f · t · c · iчастота, секунды, каналы, глубина
- кГцчерез 1000, не 1024
- стереодва канала
5Передача
- t = V / vобъём и скорость в одних единицах
- сколько файловокруглить вниз
- «превышает»следующее целое за границей
Как решать
Любое задание 7 решается одним порядком из пяти шагов. Каждому шагу ты уже учился — под ним номера подтем:
Как округлять, решает вопрос, а не число:
| Что спрашивают | Как округлять | Пример |
|---|---|---|
| Длина кода для N цветов | вверх | 300 цветов → 9 бит |
| Наибольшая глубина или число цветов при ограничении | вниз | 10,67 бита → 10 |
| Наименьшее целое число Кбайт | вверх | 5312,5 → 5313 |
| Целая часть | отбросить дробь | 235,93 → 235 |
| Сколько файлов поместится | вниз | 22,4 → 22 |
| Сколько носителей нужно | вверх | 2,5 → 3 |
| Ближайшее целое | обычное округление | 20,02 → 20 |
Частые ошибки
Восемь ошибок встречаются чаще других, и каждую ловит один вопрос к себе. Выбери ошибку — увидишь, как её исправить, и вопрос, который её ловит:
- цвета вместо битов
- умножили на 256 цветов → умножают на 8 бит: 2⁸ = 256. Спроси себя: сколько битов хранит один пиксель?подтема 1
- w + h
- 1024 + 768 пикселей → 1024 · 768 пикселей. Спроси себя: сколько клеток в сетке?подтема 2
- на 30 %
- сжали на 30 % — умножили на 0,3 → умножают на 0,7. Спроси себя: какая доля объёма осталась?подтема 3
- кГц через 1024
- 48 кГц = 48 · 1024 Гц → 48 кГц = 48 000 Гц. Спроси себя: это байты или герцы?подтема 4
- каналы и минуты
- стерео как один канал, время в минутах → стерео — 2 канала, время — в секундах. Спроси себя: все ли множители формулы на месте?подтема 4
- байты и биты
- Мбайты разделили на бит/с → сначала объём в биты. Спроси себя: в одних ли единицах объём и скорость?подтема 5
- запись и передача
- длительность записи приняли за время передачи → время передачи = объём / скорость. Спроси себя: о каком времени спрашивают?подтема 5
- рано округлил
- округлили секунды, а спрашивали минуты → сначала единицы, потом округление. Спроси себя: в каких единицах ответ?подтема 5
Итог
Тема пройдена: задача темы решена от длины кода до ответа 235. Вот что взять с собой.
- ПорядокЭлементы, размер, объём, действия, ответ.
- Длина кодаНаименьшее i, при котором 2ⁱ ≥ N.
- Объёмw · h · i для снимка, f · t · c · i для звука.
- ОкруглениеВ конце и по вопросу: вниз, вверх или целая часть.
- Задача темы50 снимков по 9 437 184 бит за 235,93 с — ответ 235.
Проверьте себя
Ответь сначала сам, потом открой ответ.
Сколько битов нужно на пиксель при палитре из 300 цветов?
ОтветСкрыть ответ
9: 2⁸ = 256 мало, 2⁹ = 512 хватает.
Файл после сжатия на 20 % занимает 400 Кбайт. Сколько он занимал до сжатия?
ОтветСкрыть ответ
400 / 0,8 = 500 Кбайт: после сжатия осталось 80 %.
Запись: 16 кГц, стерео, 16 бит, 10 секунд. Сколько это бит?
ОтветСкрыть ответ
16 000 · 10 · 2 · 16 = 5 120 000 бит.
На диск помещается 22,4 файла. Сколько файлов запишут? А если данных на 2,5 диска — сколько дисков нужно?
ОтветСкрыть ответ
Запишут 22 файла — вниз; дисков нужно 3 — вверх.
Практика
Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.
Наибольшее число цветов для 900 Кбайт
Изображение размером 1280 × 720 пикселей хранится без сжатия; на него отведено не более 900 Кбайт без учёта заголовка файла. Все пиксели кодируются одинаковым количеством бит и записываются подряд. Какое наибольшее количество цветов можно использовать?
Введите число.
Подсказка
Целая глубина — наибольшая допустимая.
Решение
Доступно 900 · 8192 = 7 372 800 бит на 1280 · 720 = 921 600 пикселей — ровно 8 бит на пиксель. Цветов 2⁸ = 256.
Решение программой
i = 900 * 8192 // (1280 * 720)print(2 ** i)Ответ: 256
Палитра 128 изображений
В системе хранятся 128 изображений размером 640 × 480 пикселей. Данные каждого изображения сжимаются на 25 %, после сжатия к каждому добавляется заголовок 16 Кбайт. Для хранения всех изображений потребовалось 32 Мбайт. Какое наибольшее количество цветов может быть в палитре каждого изображения?
Введите число.
Подсказка
Обратный ход; дробную глубину округляют вниз.
Решение
На одно изображение приходится 32 · 1024 / 128 = 256 Кбайт, без заголовка 240, до сжатия 240 / 0,75 = 320 Кбайт. Глубина 320 · 8192 / (640 · 480) = 8,53…, целая — 8 бит, цветов 2⁸ = 256.
Решение программой
per = 32 * 1024 // 128data = (per - 16) * 100 / 75i = int(data * 8192 / (640 * 480))print(2 ** i)Ответ: 256
Голосовое сообщение 2 мин 35 с
Голосовое сообщение оцифровано в формате стерео с частотой дискретизации 22 050 Гц и глубиной кодирования 16 бит. Определи наименьшее целое количество Кбайт, необходимое для хранения сообщения без учёта заголовка, если его длительность — 2 минуты 35 секунд.
Введите число.
Подсказка
Наименьшее целое число Кбайт — вверх.
Решение
Длительность 2 · 60 + 35 = 155 с. Объём 22 050 · 2 · 16 · 155 / 8192 = 13 350,58… Кбайт, поэтому нужно 13 351 Кбайт.
Решение программой
from math import ceil print(ceil(22_050 * 2 * 16 * 155 / 8192))Ответ: 13351
Вторая передача
Несжатая монозапись передавалась по каналу связи 50 секунд. Тот же фрагмент оцифровали повторно в формате стерео, с частотой дискретизации в 2 раза ниже и глубиной кодирования в 1,5 раза выше, и передали по каналу, скорость которого в 3 раза выше. Сколько секунд длилась вторая передача?
Введите число.
Подсказка
Отношение объёмов, делённое на отношение скоростей.
Решение
Стерео вместо моно — множитель 2, частота вдвое ниже — 1/2, глубина в 1,5 раза выше — 1,5: файл стал в 1,5 раза больше. Канал втрое быстрее, поэтому время 50 · 1,5 / 3 = 25 с.
Решение программой
print(round(50 * 2 * 0.5 * 1.5 / 3))Ответ: 25
Пакет из 120 снимков
Камера делает цветные снимки 2000 × 1500 пикселей с палитрой из 1000 цветов. Снимки группируются в пакеты по 120 штук и передаются со скоростью 14 000 000 бит/с. Сколько секунд передаётся один пакет? В ответе запиши целую часть числа.
Введите число.
Подсказка
1000 цветов требуют 10 бит; целая часть секунд.
Решение
Для 1000 цветов нужно 10 бит. Пакет передаётся 2000 · 1500 · 10 · 120 / 14 000 000 = 257,14… с, целая часть — 257.
Решение программой
i = 1while 2 ** i < 1000: i += 1print(int(2000 * 1500 * i * 120 / 14_000_000))Ответ: 257