ЕГЭ · Информатика · Измерение информации: текст, графика, звук (задания 7 и 11)
Растровое изображение: разрешение и глубина цвета
Считать объём картинки через ширину, высоту и биты на пиксель.
🎯 ЕГЭ информатика: этот урок закрывает задание(я) 7.
- ⚠Путают биты и байты, делят или умножают на 8 не там, где нужно
- ⚠Забывают: глубина цвета K бит даёт 2K цветов, а не K
Растровое изображение
С чего начинается тема
Линия 7 ЕГЭ — задача про объём файла, и решается она за две минуты, если знать одну формулу. Проблема в том, что формула — самая простая часть. Сложность в том, что именно спрашивают: в одном варианте дан размер картинки и нужен объём, в другом дан объём и нужна палитра, в третьем — высота, в четвёртом сравнивают два файла и просят разницу, в пятом считают, сколько снимков влезет на флешку.
Посмотрите на реальные формулировки банка ФИПИ — они все про одно и то же соотношение, прочитанное в разные стороны:
— «Растровое изображение имеет размер 1024 × 768 пикселей; используется палитра из 256 цветов. Определите размер файла в Кбайт»; — «Несжатое растровое изображение размером 640 × 480 занимает 225 Кбайт. Определите максимально возможное количество цветов в палитре»; — «Несжатый файл занимает 192 Кбайт, палитра 16 цветов, ширина 1024 пикселя. Определите высоту изображения»; — «На носителе свободно 30 Мбайт. Сколько таких изображений поместится?»; — «Программа пересохраняет снимок в размере 800 × 600 с глубиной 8 бит. Сколько Кбайт экономится при передаче 100 фотографий?»
Поэтому урок построен не вокруг формулы, а вокруг четырёх типов вопроса: прямой, обратный, сравнение двух файлов и «сколько поместится». Для каждого — разбор с полными вычислениями, а в конце — короткая программа, которой удобно проверять себя на черновике и которой нельзя ошибиться в арифметике.
Определение
Растр — прямоугольная сетка пикселей. Ширина W, высота H, глубина цвета k бит на пиксель.
Три числа, из которых состоит картинка
Растровое изображение описывается тремя числами, и больше в задании 7 ничего нет.
Ширина W — сколько пикселей в строке. Высота H — сколько строк. Их произведение — общее число пикселей. Для 1024 × 768 это 786 432 пикселя, и эта величина в задаче почти всегда промежуточная: её считают, но в ответе она не появляется.
Глубина цвета k — сколько бит отводится на один пиксель. Это единственное место, где ученики теряют балл на ровном месте, потому что в условии глубину часто задают не прямо, а через палитру: «используется палитра из 256 цветов». Палитра — это число различных цветов N, и связь у них степенная:
N = 2k, а значит k = log₂N.
Палитра 16 цветов — 4 бита. Палитра 256 цветов — 8 бит. Палитра 16 777 216 цветов — 24 бита. Обратите внимание, насколько велика разница: цветов в 65 536 раз больше, а бит — всего в три раза, потому что растёт показатель степени, а не само число.
Если число цветов не является степенью двойки — скажем, палитра из 100 цветов, — то бит берут с округлением вверх: k = ⌈log₂100⌉ = 7, потому что шести бит хватает только на 64 цвета, а семь дают 128 — с запасом. Дробного числа бит на пиксель не бывает.
Обратный вопрос — «максимально возможное количество цветов при k битах» — читается так же: N = 2k, и слово «максимально возможное» стоит в условии именно потому, что при k битах палитра может быть и меньше, но больше 2k быть не может.
Формула и её четыре прочтения
Вся линия 7 по изображениям держится на одном равенстве:
I = W · H · k,
где I — объём в битах. Дальше — только перевод единиц: ÷8 даёт байты, ÷1024 — килобайты, ещё ÷1024 — мегабайты.
Это равенство связывает четыре величины, и задача получается из него выражением любой из них.
Прямая задача. Известны W, H, k — ищем I. Просто перемножаем.
Обратная по глубине. Известны I, W, H — ищем k: k = I / (W · H). Затем, если спрашивают палитру, возводим двойку в эту степень.
Обратная по размеру. Известны I, k и одна сторона — ищем вторую: сначала число пикселей W · H = I / k, потом делим на известную сторону.
Сколько поместится. Известны объём носителя V и объём одного файла I — ищем ⌊V / I⌋, целую часть от деления. Округление здесь всегда вниз: половина картинки не картинка.
Важно: I в формуле — в битах, а условие почти всегда даёт объём в Кбайт или Мбайт. Поэтому первым действием обратной задачи всегда идёт перевод в биты: умножить на 1024 нужное число раз и ещё на 8. Забыть эту восьмёрку — самая частая ошибка линии 7, и она даёт ответ ровно в восемь раз меньше правильного.
| 2⁴ = 16 | палитра 16 цветов → 4 бита на пиксель |
|---|---|
| 2⁸ = 256 | палитра 256 цветов → 8 бит = 1 байт на пиксель |
| 2¹⁰ = 1024 | 1 Кбайт = 2¹⁰ байт; палитра 1024 цвета → 10 бит |
| 2¹⁶ = 65 536 | режим High Color → 16 бит = 2 байта |
| 2²⁰ = 1 048 576 | 1 Мбайт = 2²⁰ байт = 2²³ бит |
| 2²⁴ = 16 777 216 | режим True Color → 24 бита = 3 байта (по 8 на R, G и B) |
Почему считать надо в степенях двойки, а не в десятичных числах
Посмотрите на решение прямой задачи двумя способами.
Десятичный. 1024 · 512 · 16 = 8 388 608 бит. Делим на 8: 1 048 576 байт. Делим на 1024: 1024 Кбайт. Делим ещё на 1024: 1 Мбайт. Четыре длинных деления, и каждое можно испортить.
В степенях двойки. 1024 = 2¹⁰, 512 = 2⁹, 16 = 2⁴. Объём равен 2¹⁰⁺⁹⁺⁴ = 2²³ бит. Байт — это 2³ бит, значит объём 2²³⁻³ = 2²⁰ байт. Мегабайт — это 2²⁰ байт, значит ответ 2²⁰⁻²⁰ = 2⁰ = 1 Мбайт.
Во втором способе нет ни одного умножения — только сложение и вычитание показателей. Умножение превращается в сложение показателей, деление — в вычитание. Ошибиться в сложении однозначных чисел практически невозможно, а в делении семизначного числа на 1024 — легко.
Запомните три перехода как вычитание из показателя:
- • — биты → байты: −3 (делим на 2³);
- • — байты → Кбайт: −10;
- • — Кбайт → Мбайт: −10;
- • — значит, биты → Мбайт сразу: −23.
Приём работает всегда, когда все размеры — степени двойки, а в линии 7 они такие почти всегда: 512, 640, 1024, 1280, 1536, 2048. Числа вроде 800 и 600 степенями двойки не являются, и там придётся считать честно; но и тогда полезно разложить их на множители: 800 · 600 = 480 000, а 480 000 · 8 = 3 840 000 бит — умножать на 8 куда приятнее, чем на 24.
| Объём | V = W·H·k бит |
|---|---|
| Связь k и цветов | число цветов = 2k; k = ⌈log₂(число цветов)⌉ |
| Примеры k | 256 цв → k=8; 2048 цв → k=11; True Color 16,7 млн → k=24 |
Ловушка: не путай «палитру из 256 цветов» (k=8) с «256 бит на пиксель». Сначала из числа цветов достань k, и только k подставляй в формулу.
Разбор примера
Объём фотографии с палитрой 256 цветов
Фотография 1024 × 768 пикселей, палитра 256 цветов. Сколько Кбайт занимает несжатое изображение?
Показать решение по шагам
- 1. Глубина цвета: 256 = 2⁸, значит k = 8 бит = 1 байт на пиксель.
- 2. Число пикселей: 1024 · 768 = 786 432.
- 3. Объём: 786 432 · 1 байт = 786 432 байта.
- 4. В Кбайтах: 786 432 / 1024 = 768 Кбайт.
Ответ: 768 Кбайт
Как изображение превращается в числа
Экран не умеет хранить «картинку». Он хранит числа, и превращение изображения в числа называется дискретизацией.
Растровое изображение разбивается сеткой на пиксели — мельчайшие однородные квадратики. Для каждого пикселя хранится его цвет, закодированный числом. Чем мельче сетка, тем больше деталей сохраняется, и тем больше памяти нужно.
Разрешение — размер этой сетки: ширина × высота в пикселях. Изображение 1024 × 768 состоит из 786 432 пикселей.
Глубина цвета i — число бит, отводимое на один пиксель. Связь с числом различимых цветов та же, что и в алфавитном подходе: N = 2i, где N — количество цветов в палитре.
- • — 1 бит — 2 цвета (чёрно-белое);
- • — 4 бита — 16 цветов;
- • — 8 бит — 256 цветов;
- • — 16 бит — 65 536 цветов;
- • — 24 бита — около 16,7 миллиона цветов; это режим True Color, в котором на каждый из трёх каналов — красный, зелёный, синий — приходится по 8 бит.
Формула объёма растрового изображения:
I = W · H · i,
где W — ширина в пикселях, H — высота в пикселях, i — глубина цвета в битах. Результат получается в битах; чтобы перевести в байты, делят на 8, дальше — на 1024 при переходе к килобайтам.
Цветовые модели. RGB (красный, зелёный, синий) — аддитивная модель для светящихся экранов: цвета складываются, сумма всех трёх на максимуме даёт белый. CMYK (голубой, пурпурный, жёлтый, чёрный) — субтрактивная модель для печати: краски поглощают часть спектра, и сумма стремится к чёрному. Отсюда практическое следствие, о котором спрашивают: одно и то же изображение на экране и на бумаге выглядит по-разному, потому что модели разные.
Растр и вектор: почему форматы ведут себя по-разному
Растровая графика хранит цвет каждого пикселя. Достоинства: точно передаёт фотографию с плавными переходами тонов. Недостатки: большой объём и потеря качества при увеличении — при растяжении пиксели просто становятся крупнее, и появляется «лесенка».
Векторная графика хранит не пиксели, а описания геометрических объектов: «отрезок из точки A в точку B толщиной 2, круг с центром здесь и радиусом таким-то, заливка такого цвета». Достоинства: малый объём для схем и шрифтов и масштабирование без потери качества — при увеличении фигура пересчитывается заново. Недостаток: фотографию так не опишешь.
Отсюда практическое правило, о котором спрашивают в заданиях: логотипы, схемы, шрифты и чертежи хранят в векторе; фотографии — в растре.
Сжатие. Различают сжатие без потерь (данные восстанавливаются точно; форматы PNG, GIF, а для произвольных данных — архиваторы) и с потерями (часть информации отбрасывается навсегда, зато объём падает в разы; формат JPEG). Сжатие с потерями опирается на особенности зрения: человек плохо замечает мелкие изменения цвета и хорошо — изменения яркости, поэтому цветовую информацию можно огрубить почти незаметно.
Важное следствие для практики: повторное пересохранение JPEG ухудшает изображение каждый раз, потому что потери накапливаются. Для схем и текста на картинке сжатие с потерями противопоказано — вокруг контрастных границ появляются характерные «ореолы».
Разбор примера
Задание 7: объём несжатого изображения
Рисунок размером 1024 на 512 пикселей сохранили в виде несжатого файла с 16-битной глубиной цвета. Определите размер полученного файла в мегабайтах.
Показать решение по шагам
- 1. Шаг 1. Записываем формулу: объём в битах равен произведению ширины, высоты и глубины цвета.
- 2. Шаг 2. Переводим всё в степени двойки, не вычисляя десятичных значений. Ширина 1024 = 210, высота 512 = 29, глубина 16 = 24.
- 3. Шаг 3. Перемножаем показатели: объём равен 210 · 29 · 24 = 223 бит.
- 4. Шаг 4. Переводим биты в байты: делим на 8, то есть на 23. Получаем 220 байт.
- 5. Шаг 5. Переводим байты в мегабайты: 1 Мбайт равен 220 байт. Значит, ответ равен 20, то есть 1 Мбайт.
- 6. Метод, который стоит запомнить: не вычисляйте произведения в десятичной записи. Вся арифметика раздела — это сложение и вычитание показателей степеней двойки, и в таком виде задача решается в уме и без ошибок.
Ответ: 1 Мбайт
Что унести из урока
Растровое изображение — это сетка пикселей, и весь его объём складывается из трёх чисел: ширины, высоты и глубины цвета. Формула I = W · H · k даёт объём в битах, а дальше идут только переводы единиц: ÷8 до байт, ÷1024 до килобайт, ещё ÷1024 до мегабайт.
Глубину в условии почти никогда не дают прямо — её прячут за палитрой. Связь N = 2k работает в обе стороны: по палитре достаём биты логарифмом с округлением вверх, по битам получаем максимальное число цветов возведением двойки в степень.
Четыре типа вопроса и что в каждом делать: прямой — перемножить; обратный — сначала перевести объём в биты, потом делить; сравнение — «на сколько» значит вычитать, «во сколько раз» значит делить и не переводить единицы вовсе; сколько поместится — привести к одной единице и взять целую часть.
Считайте в степенях двойки: умножение станет сложением показателей, деление — вычитанием, а переходы бит → байт → Кбайт → Мбайт превратятся в вычитание 3, 10 и 10. И проверяйте ответ обратной подстановкой — пятнадцать секунд, которые спасают балл.
Вопрос на проверку
Сколько бит на пиксель нужно для палитры из 2048 цветов?
Ответить и проверить себя — после бесплатной регистрации.
Разбор примера
True Color: 24 бита на пиксель
Изображение 800 × 600, глубина цвета 24 бита. Сколько Мбайт?
Показать решение по шагам
- 1. Объём в битах: 800 · 600 · 24 = 11 520 000 бит.
- 2. В байтах: 11 520 000 / 8 = 1 440 000 байт.
- 3. В Мбайтах: 1 440 000 / (1024 · 1024) = 1 440 000 / 1 048 576 ≈ 1,373 Мбайт.
Ответ: ≈ 1,37 Мбайт
Обратные задачи: ищем не объём
Как разворачивать формулу
В обратной задаче известен объём файла, а найти надо одну из трёх величин справа. Порядок действий один и тот же, и его стоит выучить как ритуал.
Действие первое — перевести объём в биты. Кбайт → байты: ×1024. Мбайт → байты: ×1024 ×1024. Байты → биты: ×8. Пока объём не в битах, формулу трогать нельзя.
Действие второе — поделить на то, что известно. Если ищем глубину — делим на число пикселей. Если ищем сторону — делим на глубину, получая число пикселей, и потом делим на известную сторону.
Действие третье — перевести результат в то, что спрашивают. Если получили k, а спрашивают палитру — возводим двойку в степень k. Если получили число пикселей, а спрашивают высоту — делим на ширину.
Есть хороший способ проверить себя: подставить найденное обратно в прямую формулу и убедиться, что объём сошёлся. Это занимает пятнадцать секунд и ловит почти любую арифметическую ошибку.
Разбор примера
Обратная задача: сколько цветов в палитре
Несжатое растровое изображение размером 1280 × 720 пикселей занимает 1125 Кбайт. Определите максимально возможное количество цветов в палитре этого изображения.
Показать решение по шагам
- 1. Шаг 1. Переводим объём в биты. 1125 Кбайт — это 1125 · 1024 = 1 152 000 байт, а в битах 1 152 000 · 8 = 9 216 000 бит. Обе замены обязательны: пропустив умножение на 8, получим глубину вдесятеро с лишним меньше реальной.
- 2. Шаг 2. Считаем число пикселей: 1280 · 720 = 921 600.
- 3. Шаг 3. Делим объём на число пикселей и получаем глубину цвета: 9 216 000 : 921 600 = 10 бит на пиксель. Деление сходится нацело — это хороший признак: в задании 7 глубина всегда целая, и дробь означает ошибку в переводе единиц.
- 4. Шаг 4. Спрашивают не глубину, а палитру. Максимально возможное число цветов при 10 битах равно 2¹⁰ = 1024.
- 5. Шаг 5. Проверка обратным ходом: 1280 · 720 · 10 = 9 216 000 бит; делим на 8 — 1 152 000 байт; делим на 1024 — 1125 Кбайт. Сошлось с условием.
- 6. Почему в условии написано «максимально возможное». Художник мог использовать хоть три цвета из палитры — файл всё равно занял бы те же 10 бит на пиксель. Формула даёт разрядность кода, а по разрядности можно назвать только верхнюю границу числа цветов.
Ответ: 1024 цвета
Разбор примера
Обратная задача: высота изображения
Несжатый файл растрового изображения занимает 300 Кбайт. Для кодирования цвета каждого пикселя используется палитра из 32 цветов, ширина изображения — 960 пикселей. Определите высоту изображения в пикселях.
Показать решение по шагам
- 1. Шаг 1. Достаём глубину из палитры: 32 = 2⁵, значит на пиксель приходится 5 бит. Именно 5, а не 32 — подставлять в формулу число цветов вместо числа бит есть ровно та ошибка, ради которой условие и формулируют через палитру.
- 2. Шаг 2. Переводим объём в биты: 300 · 1024 = 307 200 байт; 307 200 · 8 = 2 457 600 бит.
- 3. Шаг 3. Делим объём на глубину и получаем число пикселей: 2 457 600 : 5 = 491 520 пикселей.
- 4. Шаг 4. Число пикселей — это W · H. Ширина известна, значит высота равна 491 520 : 960 = 512 пикселей.
- 5. Шаг 5. Проверка: 960 · 512 · 5 = 2 457 600 бит = 307 200 байт = 300 Кбайт. Сошлось.
- 6. Обратите внимание на порядок делений в шагах 3 и 4. Если сначала поделить на ширину, а потом на глубину, ответ будет тот же — деление переставимо. Но промежуточное число в первом порядке имеет физический смысл («сколько всего пикселей»), и это помогает заметить абсурдный результат вроде дробного количества пикселей.
Ответ: 512 пикселей
Вопрос на проверку
Файл несжатого изображения занимает 40 Кбайт. Сколько это бит?
Ответить и проверить себя — после бесплатной регистрации.
Сравнение двух файлов и «сколько поместится»
Задачи на два файла
Третий тип вопроса линии 7 звучит так: снимок пересохранили с другим размером и другой палитрой, сколько памяти сэкономилось или во сколько раз файл стал меньше. Здесь важно с самого начала различать два разных вопроса, потому что отвечают на них по-разному.
«На сколько» — это разность. Считаем объём до, считаем объём после, вычитаем. Ответ в единицах памяти: битах, Кбайт, Мбайт.
«Во сколько раз» — это отношение. Делим больший объём на меньший. Ответ — безразмерное число, и — важное следствие — при этом не нужно ничего переводить в байты: единицы сокращаются. Отношение 2¹⁰ бит к 2⁷ бит равно 2³ = 8, и точно так же оно равно отношению соответствующих величин в Кбайтах.
Отсюда полезный приём: увидев «во сколько раз», считайте прямо в битах и не трогайте переводы вовсе. Увидев «на сколько Кбайт» — переводите, но один раз в самом конце, уже посчитав разность в битах. Переводить каждое слагаемое отдельно дольше и опаснее.
Есть и вопрос-гибрид: «сколько экономится при передаче 100 фотографий». Порядок действий: разность на одном снимке в битах → умножить на число снимков → перевести в требуемые единицы.
Разбор примера
Пересохранение: сколько памяти сэкономится
Каждая фотография — растровое изображение 1024 × 768 пикселей, палитра из 16 777 216 цветов. Перед отправкой программа пересохраняет снимок в размере 512 × 384 пикселей с глубиной кодирования цвета 8 бит. Сжатие не производится. Сколько Мбайт памяти экономится при передаче 32 фотографий?
Показать решение по шагам
- 1. Шаг 1. Глубина исходного снимка. 16 777 216 = 2²⁴, значит 24 бита на пиксель. Это привычный True Color: по 8 бит на красный, зелёный и синий каналы.
- 2. Шаг 2. Объём исходного снимка. 1024 = 2¹⁰, 768 = 3 · 2⁸, 24 = 3 · 2³. Перемножаем: 2¹⁰ · 3 · 2⁸ · 3 · 2³ = 9 · 2²¹ бит. В привычном виде это 18 874 368 бит. Переводим в Мбайт вычитанием 23 из показателя: 9 · 2²¹ бит = 9 · 2⁻² Мбайт = 2,25 Мбайт.
- 3. Шаг 3. Объём пересохранённого снимка. 512 = 2⁹, 384 = 3 · 2⁷, глубина 8 = 2³. Итого 2⁹ · 3 · 2⁷ · 2³ = 3 · 2¹⁹ бит = 1 572 864 бит. В Мбайт: 3 · 2¹⁹⁻²³ = 3 · 2⁻⁴ = 0,1875 Мбайт.
- 4. Шаг 4. Экономия на одном снимке — разность: 2,25 − 0,1875 = 2,0625 Мбайт. В битах это 18 874 368 − 1 572 864 = 17 301 504 бит, и легко проверить, что 17 301 504 : 2²³ действительно даёт 2,0625.
- 5. Шаг 5. Экономия на всех снимках: 2,0625 · 32 = 66 Мбайт.
- 6. Шаг 6. Проверка здравым смыслом. Картинку уменьшили вчетверо по площади (обе стороны вдвое) и втрое по глубине — значит, объём упал в 12 раз. 2,25 : 12 = 0,1875 ✔ Такая прикидка занимает пять секунд и ловит ошибку в любом из шагов.
Ответ: 66 Мбайт
«Сколько поместится» и почему округляют вниз
Четвёртый тип: «на носителе свободно 30 Мбайт, каждое изображение 1024 × 768 с палитрой 256 цветов, сколько таких изображений поместится».
Схема решения короткая: посчитать объём одного файла, привести оба объёма к одной единице и поделить. Один файл здесь занимает 1024 · 768 · 8 бит = 786 432 байт = 768 Кбайт. Носитель — 30 Мбайт = 30 · 1024 = 30 720 Кбайт. Делим: 30 720 : 768 = 40 изображений.
Два замечания, которые в этом типе задач решают всё.
Округление всегда вниз. Если бы деление дало 40,7, ответом всё равно было бы 40: сорок первая картинка не влезет целиком, а половина картинки бесполезна. Никакого «округления по правилам математики» здесь нет — берут целую часть.
Единицы приводят до деления, а не после. Соблазн поделить 30 на 768 и что-то домножить велик, но именно там и рождаются ответы, отличающиеся в 1024 раза. Переведите оба числа в Кбайт (или оба в байты) и только потом делите.
Бывает и вариант с оговоркой «кроме изображений, на носителе хранится служебная информация объёмом столько-то». Тогда сначала вычитают служебный объём из свободного, и только остаток делят на размер файла.
Проверяем себя программой
Зачем в этой теме компьютер
Линия 7 решается в уме, но на экзамене вы сидите за компьютером, и глупо не воспользоваться им как калькулятором, который не ошибается в переводах единиц. Особенно это спасает в задачах с несколькими переводами подряд и с округлением вниз: там один пропущенный множитель 1024 стоит балла, а программа этот множитель не забывает никогда.
Полезно завести на черновике одну маленькую функцию и пользоваться ею во всех задачах раздела — и для изображений, и для звука, и для видео. Она строится вокруг того же равенства, только записанного в коде.
Разбор примера
Универсальный счётчик объёма на Python
Написать функцию, которая по ширине, высоте и глубине цвета выдаёт объём файла во всех употребительных единицах, и проверить ею три задачи урока.
Показать решение по шагам
- 1.
import math
def obyom(w, h, k): bit = w * h * k return {- • 'бит': bit,
- • 'байт': bit / 8,
- • 'Кбайт': bit / 8 / 1024,
- • 'Мбайт': bit / 8 / 1024 / 1024,
- • }
def glubina(cvetov): # бит на пиксель по числу цветов, с округлением вверх return math.ceil(math.log2(cvetov))print(obyom(1024, 768, glubina(256))) print(obyom(1280, 720, 10)) print(obyom(1024, 768, 24)['Мбайт'] - obyom(512, 384, 8)['Мбайт']) - 2. Шаг 1.
glubina(256)считаетmath.log2(256), получает 8.0, иmath.ceilоставляет 8. Округление вверх здесь не декорация: для палитры из 100 цветовlog2(100)равен 6,64, иceilдаёт 7 — ровно столько бит и потребуется. Безceilрезультат был бы дробным, а дробного числа бит на пиксель не существует. - 3. Шаг 2. Первый
printсчитает1024 * 768 * 8 = 6 291 456бит. Деление на 8 даёт 786 432 байт, ещё на 1024 — 768.0 Кбайт, ещё на 1024 — 0.75 Мбайт. Это та самая задача из начала урока, и ответ 768 Кбайт совпал. - 4. Шаг 3. Второй
print:1280 * 720 * 10 = 9 216 000бит → 1 152 000 байт → 1125.0 Кбайт. Совпало с обратной задачей про палитру 1024 цвета — значит, найденные там 10 бит верны. - 5. Шаг 4. Третий
printсчитает экономию на одном снимке: 2.25 − 0.1875 = 2.0625 Мбайт. Умножив на 32, получаем 66 Мбайт — ответ задачи про пересохранение. - 6. Шаг 5. Для вопроса «сколько поместится» добавьте деление нацело, а не обычное:
(30 * 1024 * 1024) // (1024 * 768 * 8 // 8). Двойной слэш//в Python — деление с отбрасыванием дробной части, то есть ровно то округление вниз, которое требует условие. Обычный/вернул бы 40.0 — здесь совпало, но в задаче с некруглыми числами он выдал бы 40.7, и ответ пришлось бы обрезать вручную. - 7. Шаг 6. Важная привычка: печатайте не только итог, но и промежуточные величины. Если в задаче получилась дробная глубина цвета или дробное число пикселей — значит, ошибка в переводе единиц, и видно её сразу, а не после записи ответа в бланк.
Ответ: 768 Кбайт, 1125 Кбайт и 66 Мбайт — все три ответа урока сходятся
Пять ловушек линии 7
Палитра вместо глубины. «256 цветов» — это 8 бит, а не 256. Подстановка числа цветов прямо в формулу увеличивает ответ в 32 раза, и ошибка эта настолько частая, что условия специально пишут через палитру.
Потерянная восьмёрка. Формула даёт биты, а отвечать почти всегда просят в байтах, Кбайт или Мбайт. Забытое деление на 8 даёт ответ, который выглядит правдоподобно, и потому не вызывает подозрений.
1000 вместо 1024. В информатике килобайт — это 2¹⁰ = 1024 байта, а не тысяча. Разница в 2,4 % кажется мелочью, но ответ «733 Кбайт» вместо «768 Кбайт» не засчитают.
Округление не в ту сторону. В задаче «сколько поместится» берут только целую часть. Обратная ошибка — округление вниз при вычислении глубины по числу цветов: там, наоборот, вверх, потому что бит должно хватить на все цвета.
Ответ не в тех единицах. Условие заканчивается словами «ответ дайте в Мбайт, записав только целое число», и это не формальность: посчитанные Кбайты в бланке будут неверными. Возьмите за правило подчёркивать в условии единицу измерения ответа перед началом счёта.
Вопрос на проверку
Изображение уменьшили с 1024 × 768 до 512 × 384 и одновременно снизили глубину с 24 бит до 8. Во сколько раз уменьшился файл?
Ответить и проверить себя — после бесплатной регистрации.
Задание №7 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №7 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.
Задание №7 в формате экзамена
Ответить и проверить себя — после бесплатной регистрации.