Задание 1 ОГЭ: объём текста в 8- и 16-битных кодировках

Подтемы

Что проверяет задание

Задание 1 ОГЭ по информатике проверяет умение находить количественные параметры текстовой информации: сколько бит или байт занимает текст при разных равномерных кодировках. Речь идёт о двух типовых схемах: кодировке, где каждый символ занимает 8 бит (1 байт) — это КОИ-8, ASCII, Windows-1251, — и кодировке, где каждый символ занимает 16 бит (2 байта) — это Unicode/UTF-16. Также проверяется умение анализировать структуру текста: правильно считать символы, включая пробелы и знаки препинания, и находить разницу в объёме между двумя вариантами текста.

Как выглядит формулировка и сколько баллов

Это первое задание экзамена, оно оценивается в 1 первичный балл. Ответ — короткий: число или слово. Есть несколько типовых формулировок:

  • «Сколько байт займёт сообщение из KK символов при кодировке, где каждый символ кодируется 8 (или 16) битами?»
  • Дан список слов через запятую, оканчивающийся тире и обобщающим словом. Из списка вычёркивают одно слово вместе со «ставшими лишними» запятой и пробелом, при этом объём текста уменьшился на известное число байт. Нужно определить вычеркнутое слово.

Второй тип формулировки — самый частый в реальных вариантах, и именно на нём стоит сосредоточиться.

Что нужно знать

  • 1 байт=8 бит1 \text{ байт} = 8 \text{ бит}.
  • При равномерном кодировании мощность алфавита NN и число бит на символ ii связаны формулой N=2iN = 2^i, откуда i=log⁡2Ni = \log_2 N.
  • Кодировки КОИ-8, ASCII, Windows-1251 — 8 бит (1 байт) на символ, независимо от того, буква это, цифра, пробел или знак препинания.
  • Кодировка Unicode (UTF-16) — 16 бит (2 байта) на символ.
  • Информационный объём текста из KK символов: V=i⋅KV = i \cdot K (в битах), или в байтах при 8-битной кодировке Vбайт=KV_{байт} = K, при 16-битной — Vбайт=2KV_{байт} = 2K.
  • Каждый символ — буква, цифра, пробел, запятая, точка, тире — считается отдельным символом и занимает столько же бит, сколько любой другой символ этой кодировки.
  • В списке вида «Слово1, Слово2, Слово3 — категория» разделителем между элементами служит сочетание «запятая + пробел», то есть 2 символа.
  • Если из середины (или из начала/конца) списка убрать один элемент, автоматически убирается сам этот элемент плюс один соседний разделитель «, », чтобы не осталось двойного пробела или лишней запятой. Итого убирается на (длина слова+2)(\text{длина слова} + 2) символов меньше при 8-битной кодировке, и на 2⋅(длина слова+2)2\cdot(\text{длина слова} + 2) байт меньше при 16-битной.

Методы решения

1. Прямой подсчёт по формуле V=iKV = iK. Если текст содержит 40 символов и кодируется 8 битами на символ, объём равен V=8⋅40=320V = 8 \cdot 40 = 320 бит =40= 40 байт. Это базовый метод для простых вопросов «сколько байт занимает текст».

2. Расчёт для 16-битной кодировки. Тот же текст из 40 символов в 16-битной кодировке: V=16⋅40=640V = 16 \cdot 40 = 640 бит =80= 80 байт. Важно не перепутать: при 16-битной кодировке байтовый объём в два раза больше, чем при 8-битной, при одинаковом числе символов.

3. Перевод единиц измерения. Если в задаче даны килобайты, а нужны байты, помнят: 1 Кбайт=1024 байт=2101 \text{ Кбайт} = 1024 \text{ байт} = 2^{10} байт. Мини-пример: сообщение весом 22 Кбайт в 8-битной кодировке содержит 2⋅1024=20482 \cdot 1024 = 2048 символов.

4. Анализ структуры текста-списка (метод разности объёмов). Это главный метод для задач с вычёркиванием слова. Суть: разница в объёме текста до и после удаления слова равна длине этого слова плюс длина «лишнего» разделителя (запятая и пробел — 2 символа) в 8-битной кодировке, или это же значение, умноженное на 2, в 16-битной. Мини-пример: убрали слово «Дом» (3 буквы) из списка через запятую — при 8-битной кодировке объём уменьшится на 3+2=53 + 2 = 5 байт.

5. Обратный ход: по разнице объёмов искать длину слова. Зная разницу Δ\Delta в байтах и кодировку, находят длину искомого слова: для 8 бит L=Δ−2L = \Delta - 2, для 16 бит L=Δ/2−2L = \Delta/2 - 2. Затем среди слов списка ищут единственное слово нужной длины.

Алгоритм решения по шагам

  1. Определить кодировку и число бит на символ (8 или 16), указанное в условии.
  2. Выписать все слова списка и посчитать количество букв в каждом (без запятых и пробелов).
  3. Установить формулу связи между разностью объёмов Δ\Delta (в байтах) и длиной вычеркнутого слова LL: при 8 битах Δ=L+2\Delta = L + 2, при 16 битах Δ=2(L+2)\Delta = 2(L+2).
  4. Подставить известное значение Δ\Delta из условия и вычислить LL.
  5. Найти в списке слово, длина которого равна найденному LL. Если совпадение единственное — это и есть ответ.
  6. Проверить: пересчитать полный объём исходного текста и текста после удаления слова, убедиться, что разница действительно равна Δ\Delta.

Разбор примеров

Пример 1. Текст: «Обь, Лена, Волга, Москва, Макензи, Амазонка — реки». Кодировка КОИ-8, 8 бит на символ. После вычёркивания одной реки и лишних знаков препинания объём уменьшился на 8 байт.

Шаг 1: кодировка 8-битная, значит Δ=L+2\Delta = L + 2.

Шаг 2: подставляем Δ=8\Delta = 8: L=8−2=6L = 8 - 2 = 6.

Шаг 3: считаем длины слов: Обь — 3, Лена — 4, Волга — 5, Москва — 6, Макензи — 7, Амазонка — 8. Единственное слово длиной 6 букв — «Москва».

Ответ: Москва. Проверка: если убрать «Москва, » (слово плюс запятая и пробел), из «Волга, Москва, Макензи» получится «Волга, Макензи» — корректная запись без двойных пробелов, разница ровно 6+2=86+2=8 байт.

Пример 2. Текст: «Чад, Куба, Катар, Швеция, Эстония, Танзания, Сальвадор — страны». Кодировка КОИ-8, 8 бит на символ. Разница объёмов — 11 байт.

Шаг 1: формула та же, Δ=L+2\Delta = L + 2.

Шаг 2: L=11−2=9L = 11 - 2 = 9.

Шаг 3: длины слов: Чад — 3, Куба — 4, Катар — 5, Швеция — 6, Эстония — 7, Танзания — 8, Сальвадор — 9. Совпадает только «Сальвадор».

Ответ: Сальвадор. Проверка: слово стоит последним перед тире. Убираем «Сальвадор» вместе с предшествующей запятой и пробелом: «..., Танзания, Сальвадор — страны» превращается в «..., Танзания — страны» — ровно один пробел перед тире сохраняется, лишних символов не остаётся. Разница составляет 9+2=119+2=11 байт, что совпадает с условием.

Пример 3. Текст: «Аки, Бали, Банда, Сибуян, Камотес, Лабрадор, Линкольна — моря». Кодировка КОИ-8, 8 бит на символ. Разница объёмов — 7 байт.

Шаг 1: Δ=L+2\Delta = L + 2.

Шаг 2: L=7−2=5L = 7 - 2 = 5.

Шаг 3: длины слов: Аки — 3, Бали — 4, Банда — 5, Сибуян — 6, Камотес — 7, Лабрадор — 8, Линкольна — 9. Единственное слово из 5 букв — «Банда».

Ответ: Банда. Проверка: слово стоит в середине списка. Убираем «Банда, » целиком: «Бали, Банда, Сибуян» превращается в «Бали, Сибуян» — корректно, без двойных запятых и пробелов. Разница объёма равна 5+2=75+2=7 байт, что совпадает с данными условия.

Во всех трёх примерах работает одна и та же логика: независимо от того, стоит ли вычеркнутое слово в начале, середине или конце списка (перед тире), разница объёмов всегда равна длине слова плюс 2 символа на разделитель «, ». Это делает метод универсальным и быстрым.

Типичные ошибки и ловушки

  • Забывают про разделитель. Считают разницу объёмов равной только длине слова, без добавления 2 байт за запятую и пробел, — это даёт неверную длину и, соответственно, неверный ответ.
  • Путают биты и байты. В условии часто явно указано «8 бит на символ», а разница объёма дана в байтах — нужно сразу работать в одних единицах и не забывать делить/умножать на 8 при переходе между ними.
  • Ошибка в подсчёте букв. Мягкий знак, «й», «ё» — это отдельные буквы, их нужно учитывать при подсчёте длины слова. Легко ошибиться на одну букву и получить неверный ответ.
  • Неверно применяют коэффициент для 16-битной кодировки. Если кодировка 16-битная, разница в байтах вдвое больше, чем количество символов, — забывают удвоить или, наоборот, делят не в ту сторону.
  • Ищут совпадение длины среди нескольких слов. Если в списке случайно оказалось два слова одинаковой длины, нужно перепроверить структуру текста (позицию тире, наличие финальной точки) — обычно условие сформулировано так, что совпадение единственное, но при невнимательном подсчёте букв можно ошибочно получить два «подходящих» слова.
  • Не проверяют ответ обратной подстановкой. Стоит всегда мысленно (или на черновике) убрать найденное слово из текста и убедиться, что разница объёмов действительно совпадает с условием.

Как готовиться

Отработайте формулы V=iKV = iK, N=2iN = 2^i и перевод единиц измерения (бит, байт, килобайт) до автоматизма — их нужно применять быстро, без раздумий. Решите несколько задач на подсчёт объёма простого текста в 8- и 16-битной кодировке, чтобы почувствовать разницу в два раза между ними. Затем перейдите к задачам на вычёркивание слова из списка: выпишите слова, посчитайте длины букв, потренируйтесь быстро находить L=Δ−2L = \Delta - 2 (для 8 бит) или L=Δ/2−2L = \Delta/2 - 2 (для 16 бит). Обязательно решите по 5–7 задач каждого типа из открытого банка заданий ОГЭ, чтобы автоматизировать подсчёт длины русских слов (обращайте внимание на мягкий и твёрдый знак, буквы «е»/«ё», «и»/«й» — это разные символы). Перед экзаменом полезно решить пробный вариант на время: задание 1 должно занимать не больше 2–3 минут, чтобы осталось время на более сложные номера.

Частые вопросы

Чем отличается кодировка 8 бит от кодировки 16 бит при подсчёте объёма текста?

В 8-битной кодировке (КОИ-8, ASCII, Windows-1251) каждый символ занимает 1 байт, поэтому объём в байтах равен числу символов. В 16-битной кодировке (Unicode) каждый символ занимает 2 байта, поэтому объём в байтах вдвое больше числа символов.

Почему при вычёркивании слова из списка разница объёма равна длине слова плюс 2?

Потому что вместе со словом убирается один соседний разделитель — запятая и пробел, который занимает ровно 2 символа (2 байта в 8-битной кодировке). Поэтому суммарная разница объёма — это длина слова плюс эти 2 байта.

Нужно ли учитывать пробелы и знаки препинания при подсчёте объёма текста?

Да, каждый пробел, запятая, точка и тире — это отдельный символ, который кодируется тем же числом бит, что и буква, поэтому их обязательно включают в общий подсчёт количества символов.

Как быстро понять, какое слово вычеркнули из списка?

Нужно вычислить длину вычеркнутого слова по формуле L = Δ − 2 (для 8-битной кодировки) или L = Δ/2 − 2 (для 16-битной), где Δ — разница объёмов из условия, а затем найти в списке единственное слово с такой длиной.

Меняется ли формула, если вычеркнутое слово стоит в самом начале или конце списка?

Нет, формула остаётся той же: убирается слово плюс один соседний разделитель «, », независимо от позиции слова в списке, что подтверждается разбором примеров с разным расположением искомого слова.

Что делать, если в списке два слова одинаковой длины?

Стоит перепроверить подсчёт букв в каждом слове — часто ошибка связана с мягким знаком или буквами «е»/«ё», «и»/«й». Обычно условие построено так, что подходящее слово единственное.

Сколько времени должно уходить на решение задания 1 на экзамене?

Рекомендуется тратить не больше 2–3 минут: подсчёт длины слов и применение формулы разности объёмов делаются быстро при должной тренировке.