Когда человек говорит или пишет, он использует естественный язык, а компьютер работает только с последовательностями нулей и единиц. Кодирование информации — это процесс перевода сообщений из привычной для человека формы (текст, числа, звук, изображение) в форму, удобную для хранения и обработки техническими устройствами. Любой такой перевод опирается на набор правил, которые однозначно связывают элементы сообщения и их представление в виде знаков — это и есть код.
Код в информатике понимают как систему соответствий между исходными сообщениями и их представлением в виде последовательностей символов некоторого алфавита. Для ЕГЭ важно, что кодирование всегда должно быть однозначным: по записанному коду можно восстановить исходное сообщение, не получая двух разных вариантов расшифровки.
Перед тем как говорить о двоичном коде, нужно ввести понятие алфавита. Алфавит — это конечный набор различных символов, которые используются для записи сообщений или кодов. Например, алфавит заглавных русских букв содержит 33 символа, алфавит арабских цифр — 10 символов (от 0 до 9).
Количество различных символов в алфавите называют мощностью алфавита и обозначают буквой N. Если алфавит состоит из двух символов (0 и 1), то N = 2; если из десяти цифр, то N = 10 и т.д. Понимание мощности алфавита важно для задач ЕГЭ, потому что по ней определяют, сколько различных кодовых комбинаций можно составить и какой минимальной длины должны быть кодовые слова для заданного количества сообщений.
Компьютерный алфавит, на котором в итоге строится почти всё внутреннее представление информации, — двоичный алфавит {0, 1}. Каждому элементу закодированного набора (букве, цифре, пикселю, звуку) сопоставляется последовательность нулей и единиц фиксированной или переменной длины, называемая двоичным кодом.
Двоичный код удобен технически: любой элемент памяти или цепь может находиться в одном из двух устойчивых состояний (есть ток / нет тока, магнитное поле одного направления / другого), что естественно отображается цифрами 0 и 1. На ЕГЭ чаще всего рассматриваются коды фиксированной длины: каждому символу алфавита сопоставляется двоичная последовательность одинаковой длины i бит. Это упрощает задачи на подсчёт объёма информации и количества возможных кодовых комбинаций.
Если код фиксированной длины состоит из i двоичных разрядов (битов), в каждом разряде может стоять 0 или 1. Количество различных комбинаций при этом равно 2^i, потому что в каждом из i разрядов два возможных варианта. Например, для длины кода i = 3 получаем 2^3 = 8 различных трёхбитных комбинаций: от 000 до 111.
В заданиях ЕГЭ эта связь чаще всего записывается в виде формулы:
N ≤ 2^i,
где N — количество различных сообщений или символов, которые требуется закодировать, а i — длина кодового слова в битах. Из этого неравенства можно найти минимальное целое i, при котором для всех символов хватит разных кодов. Например, если нужно закодировать 20 различных символов, ищем минимальное i, при котором 2^i ≥ 20: 2^4 = 16 не хватает, 2^5 = 32 уже достаточно, значит i = 5 бит.
Во многих задачах ЕГЭ сначала описывают алфавит (например, «алфавит состоит из 6 символов»), а затем спрашивают, какой длины код нужно использовать или сколько информации несёт один символ. Здесь применяется связка двух идей: мощности алфавита и количества двоичных комбинаций.
Если алфавит содержит N символов и для каждого символа используется двоичный код длины i, то обязательно должно выполняться условие N ≤ 2^i, иначе некоторых символов будет нечем закодировать. Напротив, если известно i, то максимальное число различных символов, которые можно закодировать, равно 2^i; это часто спрашивают в задачах вида «сколько различных символов можно закодировать двоичными словами длины 7 бит».
На ЕГЭ по информатике размер информации обычно измеряют в битах и байтах. Один бит — это минимальная единица информации, которая может принимать два возможных значения (0 или 1). Восьмибитная последовательность образует байт, поэтому 1 байт = 8 бит.
Если известно, что каждый символ сообщения кодируется i битами, а текст содержит K символов, информационный объём такого сообщения можно вычислить по формуле: V = K * i (в битах). Часто результат нужно перевести в байты или килобайты: чтобы получить количество байт, делят на 8, а чтобы получить килобайты — делят на 1024. В заданиях могут просить, например, определить длину сообщения по известному объёму файла или наоборот — вычислить объём файла, содержащего текст из заданного количества символов.
Текстовая информация кодируется по символьно: каждому символу (букве, цифре, знаку препинания, пробелу) сопоставляется собственный двоичный код. Совокупность таких соответствий называют кодировкой (например, ASCII или одна из версий Unicode), и именно от выбранной кодировки зависит, сколько бит используется для представления одного символа.
В простых экзаменационных задачах обычно рассматривают условные алфавиты: «алфавит состоит из 7 символов», «каждый символ кодируется двоичным кодом одинаковой длины» и т.п. Ученик не обязан знать реальные кодировки, но должен уметь:
В современной структуре ЕГЭ тема кодирования чаще всего встречается в задании с номером 4 (иногда формулировка немного меняется, но суть остаётся той же). Типичные варианты:
Во всех случаях ключ к решению один: аккуратно связать мощность алфавита, длину кода и информационный объём сообщения через формулы N ≤ 2^i и V = K * i. Важно не забывать перевод единиц измерения (бит, байт, килобайт), чтобы финальный ответ соответствовал требуемому формату.
Пусть алфавит для кодирования содержит 12 различных символов. Нужно определить минимальное количество бит в кодовом слове, чтобы закодировать каждый символ двоичным кодом одинаковой длины.
Ищем минимальное целое i, для которого выполняется неравенство 2^i ≥ 12. Проверяем подряд:
2^3 = 8 — недостаточно,
2^4 = 16 — достаточно, следовательно, i = 4 бита.
Это означает, что одному символу соответствует двоичный код длиной 4 бита, и максимум можно закодировать 16 разных символов (некоторые комбинации останутся неиспользованными). Задачи такого типа часто дополняются вопросом о максимально возможном числе символов при выбранной длине кода.
Пусть используется алфавит из 20 символов, и каждый символ кодируется двоичными словами минимально возможной длины. Нужно найти информационный объём сообщения из 100 символов.
Подобные примеры позволяют натренировать типовой переход «мощность алфавита → длина кода → объём сообщения», который постоянно встречается в экзаменационных заданиях.
Иногда в задании дают таблицу соответствия между символами и их двоичными кодами, а также длинную последовательность нулей и единиц. Требуется восстановить исходное сообщение. Стратегия решения:
Если длина кода фиксированная (например, 3 бита), задача упрощается: строку разбивают на блоки по 3 бита и каждый блок заменяют на символ по таблице. Важно не сбиться с границами блоков и не перепутать коды символов, поэтому полезно сначала выписать все пары «код — символ» в удобной для себя форме.
Корректное кодирование должно обеспечивать однозначное декодирование: по полученному набору кодовых слов можно восстановить исходное сообщение единственным способом. Для этого, помимо достаточного количества различных кодовых комбинаций, важно, чтобы коды символов были подобраны без пересечений.
Префиксным называют код, в котором ни одно кодовое слово не является началом другого. Такой код автоматически гарантирует однозначность чтения: при последовательном просмотре двоичной строки достаточно идти слева направо и каждый раз фиксировать момент, когда встретилось полное кодовое слово. В школьных задачах идею префиксности обычно упоминают кратко, но важно понимать, почему «склеенный» код, в котором одно слово является началом другого, может привести к неоднозначной расшифровке.
Одна из наиболее распространённых ошибок — путаница в единицах измерения: бит, байт, килобайт, мегабайт. Ученик верно находит количество бит, но забывает разделить на 8 или 1024, в результате получает в ответе число, отличающееся от правильного в 8 или 1024 раза.
Вторая частая проблема — неверный выбор длины кода. Иногда берут i так, что 2^i оказывается меньше мощности алфавита, и при этом всё равно продолжают решать задачу. Чтобы этого избежать, нужно каждый раз явно проверять неравенство 2^i ≥ N.
Наконец, при декодировании по таблице некоторые выпускники пытаются угадывать символы «на глаз», не соблюдая границы кодовых слов. Правильная стратегия — сначала чётко зафиксировать длину кода или убедиться в префиксности, затем двигаться строго слева направо, не перескакивая через биты и не подбирая символы «по смыслу».
Для уверенного выполнения заданий ЕГЭ по теме кодирования полезно регулярно тренироваться на нескольких типах задач.
При подготовке удобно завести небольшой «шпаргалочный» список степеней двойки (от 2^0 до 2^16) и держать его перед глазами при решении задач, пока значения не запомнятся. Это значительно ускоряет расчёты и снижает вероятность ошибок при прикидке длины кода и количества возможных комбинаций.