Биты и байты: почему картинка внезапно весит в восемь раз больше

Считаем объём изображения без сжатия, отличаем глубину цвета от числа цветов и отдельно учитываем перевод битов в байты.

К чтению
Содержание
  1. Сначала посчитать пиксели
  2. Затем понять глубину цвета
  3. Объём в нужных единицах
  4. Проверка изменением одного условия
  5. Попробуйте без подсказки

Бит и байт нельзя подставлять в одну формулу как одинаковые единицы. Восемь бит составляют один байт. Если задача просит ответ в байтах, а вычисление закончилось в битах, результат ещё не готов.

Разберём учебную модель: изображение имеет размеры 128 на 64 пикселя, каждый пиксель кодируется одинаковым количеством бит, сжатия нет, заголовки и служебные данные не учитываются. Без этих условий размер настоящего файла по одной картинке вычислить нельзя.

Сначала посчитать пиксели

Ширина и высота измерены в пикселях, поэтому количество пикселей равно 128⋅64=8192128\cdot64=8192. Удвоение только ширины удваивает объём, а удвоение и ширины, и высоты увеличивает его в четыре раза.

Не складывайте размеры: сумма 128 и 64 описывала бы не площадь прямоугольной сетки. Полезно проверить это на маленьком рисунке три на два: в нём шесть клеток, а не пять.

Затем понять глубину цвета

Если палитра содержит шестнадцать цветов и используется равномерный двоичный код, достаточно четырёх бит на пиксель: 24=162^4=16. Если цветов семнадцать, четырёх бит уже недостаточно. Нужны пять бит, которые дают до тридцати двух разных кодов.

Число цветов и число бит — разные величины. «Шестнадцать цветов» не означает «шестнадцать бит на каждый пиксель». Для двадцати цветов тоже нужно пять бит: выбираем минимальное целое количество разрядов, которое вмещает всю палитру.

Путь расчёта: 128 на 64 дают 8192 пикселя; шестнадцать цветов требуют четыре бита; получаем 32768 бит, затем 4096 байт.

Объём в нужных единицах

Для исходных шестнадцати цветов объём равен 8192⋅4=327688192\cdot4=32768 бит. Делим на восемь и получаем 4096 байт. Если в условии килобайт принят равным 1024 байтам, ответ — четыре таких килобайта.

Читайте соглашение об единицах в конкретной задаче. В обозначениях хранения данных встречаются как десятичные, так и двоичные кратные единицы. В решении лучше явно написать делитель, чем надеяться, что сокращение «КБ» снимет неоднозначность.

Проверка изменением одного условия

Увеличим палитру до семнадцати цветов, сохранив размеры и модель хранения. Теперь объём 8192⋅5=409608192\cdot5=40960 бит, то есть 5120 байт. Один дополнительный цвет увеличил глубину каждого пикселя: это не добавка в один бит ко всему изображению.

А если увеличить число цветов с семнадцати до двадцати? Объём в нашей модели не изменится: пяти бит всё ещё достаточно. Такая ступенчатая зависимость помогает понять, почему нельзя считать объём пропорциональным самому количеству цветов.

Попробуйте без подсказки

Картинка 32 на 32 пикселя содержит восемь цветов. Сколько байт нужно без сжатия и служебных данных? Здесь 1024 пикселя и три бита на каждый: 3072 бита, или 384 байта. Проверьте, что три бита действительно дают восемь комбинаций.

Дальше сравните её с изображением того же размера из девяти цветов: потребуется четыре бита и 512 байт. Если хочется закрепить связку «условие — единицы — расчёт», откройте информатику ОГЭ или раздел кодирования в информатике ЕГЭ.

Материал подготовлен с помощью ИИ. Примеры учебные и не являются официальными заданиями экзамена. Источники указаны в статье. Как устроены материалы Курсика . Сообщить о неточности.

Обновлено . Статью можно сохранить и вернуться к ней во время подготовки.