Алгоритм решения задания 14. Часть 1
Учимся решать 15 задания первого типа
Читать
Хранение информации в компьютере
В 11 задании ЕГЭ по информатике нужно работать с текстовыми сообщениями: паролями, идентификаторами и серийными номерами. Обычно требуется найти длину сообщения, объём памяти или мощность алфавита.
Главная сложность здесь не в вычислениях, а в порядке округления. Количество бит на символ и число байт на один идентификатор округляются вверх, а слова «не более», «более» и «не менее» задают знак итогового неравенства.
Сначала разберём базовую теорию, затем соберём единый алгоритм и решим два характерных примера.
Хранение информации в компьютере
В современном мире информационные технологии стали неотъемлемой частью нашей жизни. Компьютеры, смартфоны, планшеты и даже бытовая техника работают с цифровыми данными. Мы храним на них фотографии, документы, музыку, фильмы, а иногда и целые архивы знаний.
Но как именно всё это «умещается» внутри устройства? На первый взгляд кажется, что информация записывается так же, как текст на бумаге, но в компьютерах процесс устроен куда интереснее и хитрее.
Компьютеры относятся именно к цифровым устройствам, поэтому им необходим простой и универсальный способ закодировать любую информацию. Благодаря этому мы можем хранить на одном и том же носителе как текст, так и изображения, и звук, и видео.
Основой цифрового мира стали два символа — 0 и 1. На деле это не совсем цифры, а скорее условные обозначения состояний электрического сигнала. Для процессора и любой цифровой схемы важен только факт: напряжение выше заданного порога или ниже его.

Аналогично, можно вместо 0 и 1 использовать слова («Да» и «Нет», «Истина» и «Ложь», «Высокий» и «Низкий») или попросту включение и выключение лампочки. Суть будет одна и та же — мы просто указываем на одно из двух возможных состояний системы. Но именно использование цифр 0 и 1 открывает нам дорогу к возможностям кодирования информации.
Представим такую ситуацию: у нас есть пятибалльная шкала оценивания работы учащихся. И все оценки необходимо как-то хранить в компьютере — в цифровом виде. При этом, мы не можем просто так записать в память компьютера цифру 5. Наши микросхемы память просто не поймут, что это такое. У них ведь есть только 2 значения: напряжение ниже порогового (логический 0) и напряжение выше порогового (логическая 1).
Здесь и вступает в игру кодирование. Каждый символ нашей шкалы оценивания мы можем закодировать несколькими базовыми значениями — нулями и единицами.
Например, для значения «1» все просто — используем одну единицу. Со значением «2» уже посложнее. Можем записать её как одну единицу и один ноль, следующие друг за другом — «10». Тогда числу «3» у нас будет соответствовать значение «11», 4 — «100», а «5» — «101». Да, мы с вами только что заново придумали двоичную систему счисления.
Но здесь немного о другом. Вот есть у нас оценки, закодировали мы их. А сколько памяти выделять под 1 оценку? А под 10?
Если значение «1» мы можем закодировать одним битом, «2» и «3» — двумя, а «4» и «5» — тремя, то это означает, что под любую оценку нам необходимо выделять память под 3 бита. Иначе у нас просто может не поместиться какая-либо оценка.
Можно представить выделяемую под оценки память как некие ячейки, в которых мы храним значение каждого числа. Если ячеек будет меньше, то и число не поместится. А если нам требуется всего 1 ячейка (как для значения «1»), то оставшиеся ячейки слева заполним незначащими нулями (это которые не влияют на наше хранимое значение).

Как видите, на изображении выше у нас есть еще некое число «N» — максимально возможное для нашей трёхбитной системы памяти. Давайте определим, сколько различных чисел можем закодировать с помощью трёх битов.
Для этого воспользуемся формулой Хартли:
Здесь:
- N — количество различных вариантов кодирования
- i — используемое количество бит
По данной формуле имеем количество вариантов кодирования 23, то есть 8 вариаций. Либо же в нашей системе числа от 0 до 7 (да, формально не все эти числа нужны для оценок по пятибалльной шкале).
Теперь решим обратную задачу. Мы знаем, что в системе всего 5 оценок (от 1 до 5 включительно). То есть требуется закодировать 5 различных символов. Число 5 здесь означает мощность алфавита.
Под алфавитом понимается любой набор допустимых символов: цифры, буквы и специальные знаки. Мощность алфавита N — количество разных символов в этом наборе.
Для вычисления числа бит i, которое потребуется для кодирования N символов воспользуемся следующей формулой:
Вычислим логарифм числа 5 по основанию 2. Получаем приближённое значение 2,322. Это у нас дробное число, но количество ячеек (бит) всегда должно быть целым, мы же не можем разделить и без того минимальную единицу измерения информации.
Встаёт вопрос, как из числа 2,322 получить целое. У нас есть два пути округления: в большую или меньшую сторону. Именно в этом и кроется тонкость решения 11 задания ЕГЭ.
Но давайте рассуждать логически. Мы уже видели, что число 5 имеет значение «101», то есть тут нужно 3 бита. Тогда, если мы округлим 2,322 до 2, то все наши значения не поместятся. Следовательно, округляем вверх: меньшего количества бит не хватит на весь алфавит.
То есть, даже если для всех, кроме последнего, числа требуется всего, допустим, 6 бит. Но для единственного, самого большого, уже потребуется целых 7, то мы обязаны будем выделить все 7 бит для кодирования наших значений!
И сразу важно подчеркнуть: хотя бит является минимальной единицей измерения информации, в реальных компьютерах он сам по себе не используется для записи и чтения данных. Минимальной адресуемой единицей памяти является байт. Это означает, что мы не можем напрямую сохранить, скажем, «3 бита информации» — в любом случае компьютер выделит под них один целый байт.
На подавляющем большинстве современных компьютеров 1 байт состоит из 8 бит. Такое соотношение закрепилось исторически: оно удобно для кодирования символов, работы с числами и построения архитектуры процессоров. Именно поэтому практически все операции с памятью, файлами и данными оперируют байтами, а не битами.
Например, хоть для хранения школьной оценки нам нужно всего 3 бита, но на деле в памяти займётся 1 байт, потому что меньше выделить нельзя. А если требуется хранить 9 бит информации, то компьютер отведёт уже 2 байта (16 бит), так как дробить память меньше, чем по одному байту, компьютер не может.
Чтобы уверенно ориентироваться в объёмах данных, полезно помнить базовые соотношения:
1 байт = 8 бит = бит
1 Кбайт = байт = · бит = бит
1 Мбайт = Кбайт = · байт = · бит = бит
1 Гбайт = Мбайт = · Кбайт = · байт = · бит = бит
Немного про терминологию. Сокращение Кбайт (или КБ) означает «килобайт». Один килобайт равен 1024 байт, хотя традиционно десятичная приставка «Кило-» означает умножение на 1000, а не 1024. В англоязычной литературе можете встретить иной термин: Кибибайт (KiB), который будет означать 1024 байт, когда Килобайт (KB) — 1000 байт. Далее аналогично Мебибайт = 1024 Кибибайт, Гибибайт = 1024 Мебибайт и так далее. То есть здесь используются двоичные приставки, а не десятичные.
От этого порой могут страдать потребители, которые покупают флеш-накопитель. На таком изделии может быть указана ёмкость в 1 гигабайт, что равняется 1 000 000 000 байт. А покупатель же предполагает, что ёмкость указана в привычных ему единицах (Гибибайт) и составляет 1 073 741 824 байт.
Но в нашей стране все же принято, что 1 Килобайт это 1024 байт, 1 Мегабайт это 1024 Килобайт и так далее.
Еще одно непонимание у пользователя может возникнуть при определении скорости передачи данных. Например, вы видите скорость в 100 Мб в секунду. Но файл, который весит 900 Мегабайт почему-то скачивается не за 9 секунд.
Тут опять же дело в том, что сокращение «Мб» означает «Мегабит» (на английском будет понятней — «Mbit»), а не «Мегабайт» (обратите внимание на букву «б», при обозначении битов она строчная). И как раз скорость передачи данных принято обозначать в битах, Килобитах, Мегабитах и так далее.
Возвращаясь же к заданию 11 ЕГЭ по информатике, чтобы не путаться во всех этих обозначениях, выполняйте всегда базовые операции в битах, а ответ уже после вычислений переводите в нужную размерность.
