📋 Информационный объём текста

Информатика | ЕГЭ 2026 | Кодирование информации


Информационный объём текста

Задача

При регистрации в компьютерной системе каждому объекту присваивается идентификатор, состоящий из 60 символов и содержащий только десятичные цифры и символы из 250-символьного специального алфавита. В базе данных для хранения каждого идентификатора отведено одинаковое и минимально возможное целое число байт. При этом используется посимвольное кодирование идентификаторов, все символы кодируются одинаковым и минимально возможным количеством бит.

Определите объём памяти (в Кбайтах), необходимый для хранения 65 536 идентификаторов.

Анализ условия

  1. Для получения ответа нужно узнать объём памяти I, который требуется для хранения одного идентификатора, и умножить его на 65 536.
  2. Поскольку используется равномерное кодирование (все символы идентификатора кодируются одинаковым количеством бит), для определения размера одного идентификатора нужно найти количество бит i, выделяемое на один символ, и умножить его на количество символов — 60.
  3. Количество бит i, которые нужно выделить для хранения кода одного символа, определяется мощностью алфавита M и должно удовлетворять неравенству: 2i ≥ M Здесь 2i — количество двоичных кодов длины i. Это значит, что с помощью i бит можно закодировать 2i различных вариантов (кодов символов).

Решение

Вычислим мощность алфавита M, т. е. количество символов, которые используются при составлении идентификаторов: M = 10 + 250.

print( M )

Теперь определим, сколько битов нужно выделить для хранения кода одного символа. Для этого найдём минимальное целое значение i, при котором выполняется неравенство 2i ≥ M.

Учитывая, что логарифмическая функция — возрастающая, получаем:

i ≥ log2 M
from math import log2, ceil

i = ceil( log2(M) )
print( i )

Идентификатор длиной 60 символов занимает в памяти 60·i битов. Для перевода в байты нужно разделить это значение на 8:

I = ceil( 60*i/8 )
print( I )

Теперь остаётся определить объём памяти для 65 536 идентификаторов и перевести его в килобайты, разделив на 1024:

V = 65536*I / 1024
print( V )

Итоговая программа:

from math import log2, ceil
M = 10 + 250
print( M )
i = ceil( log2(M) )
print( i )
I = ceil( 60*i/8 )
print( I )
V = 65536*I / 1024
print( V )

После выполнения этого фрагмента получим:

4352 Кбайт

Разбор по шагам

ШагФормулаЗначение
Мощность алфавитаM = 10 + 250260
Бит на символi = ⌈log₂ 260⌉9 (2⁸ = 256 < 260, 2⁹ = 512 ≥ 260)
Бит на идентификатор60 · 9540 бит
Байт на идентификаторI = ⌈540 / 8⌉68 байт (67,5 → округление вверх)
Всего байт65536 · 684 456 448 байт
Объём в Кбайтах4 456 448 / 10244352 Кбайт

🧮 Интерактивный расчёт

Измените параметры задачи и нажмите «Рассчитать» — калькулятор пошагово покажет все промежуточные значения.

Нажмите «Рассчитать», чтобы увидеть результат.

По умолчанию подставлены параметры из условия задачи.

Page 1 of 1