Курс№11. Кодирование: сколько бит и байт занимают данные0%
Теория · номер 11 из 27

Кодирование: сколько бит и байт занимают данные

Есть серийные номера или пароли, каждый символ кодируют одинаковым числом бит. Надо узнать, сколько памяти займёт вся база, или найти алфавит по известной памяти. Всё решается руками, кода здесь нет.

5 разделов~30 минут1 первичный балл
  1. 1Что проверяет номер
  2. 2Шесть шагов
  3. 3Примеры
  4. 4Настоящие задачи: перебор i
  5. 5Ловушки и домашка
Раздел 1 из 5

Что проверяет номер

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

Сюжет на экзамене почти всегда один: серийные номера, идентификаторы или пароли. Меняется только то, что спрашивают.

Раздел 2 из 5

Шесть шагов

  1. Сколько значений N? Нужно наименьшее i, при котором 2i ≥ N. Это число бит на одно значение.
  2. Сколько значений в одной записи? Бит на запись = число значений × i.
  3. Переводим биты в байты и округляем вверх: запись хранится целыми байтами.
  4. Умножаем на число записей.
  5. Дополнительные данные, одинаковые для каждой записи, прибавляем к байтам.
  6. Переводим единицы: 1 Кбайт = 1024 байта, 1 Мбайт = 1024 Кбайт.

Степени двойки, которые надо знать:

СтепеньЧислоСтепеньЧисло
2¹22⁶64
2²42⁷128
2³82⁸256
2⁴162⁹512
2⁵322¹⁰1024

Где и как округлять

Что считаемКуда
Бит на значениеВсегда вверх
Биты записи в байтыВверх
Максимум символов при заданной памятиВниз
Раздел 3 из 5

Примеры

1. Сколько занимает база

Пароль из 105 символов, в наборе 1510 символов. Записей 16 384. Сколько Кбайт занимают пароли?

2. Дополнительные данные

Код участника: 25 букв из 26-буквенного алфавита. На каждого участника хранят ещё 35 байт других данных. Сколько байт нужно на одного?

3. Максимальная длина пароля

На 862 пользователя выделили 276 Кбайт. Алфавит 530 символов. Сколько символов максимум может быть в пароле?

4. Две части в одной записи

Номер состоит из 17 букв из 32 символов и кода региона из 366 вариантов. На человека выделено 50 байт. Сколько осталось под дополнительные данные?

Попробуй самучебная задача

Пароль из 40 символов, в наборе 100 символов. Паролей 2048. Сколько Кбайт они занимают?

Раздел 4 из 5

Настоящие задачи: перебор i

Вот какие вопросы встречаются на экзамене:

Что просятКак решать
Максимальная мощность алфавита при «не более X памяти»Перебираем i, берём наибольшее подходящее. Ответ 2i
Минимальная мощность при «не менее»Берём наименьшее подходящее i. Ответ 2i−1 + 1
Максимальная или минимальная длина номераСначала память на один номер, потом биты, потом длина
Составной алфавит«Десятичные цифры и символы из 120-символьного алфавита» это 10 + 120 = 130 символов
Код и порядковый номер в одной записиБиты на запись = L · i + биты на номер
Два типа записейСчитаем байты каждого типа, складываем, ищем i перебором
Объём в МбайтБайты умножаем на число записей и дважды делим на 1024

Таблица перебора

Когда ищем алфавит, выписываем таблицу: i бит, байт на номер, вся память. Смотрим, где ещё влезает.

Пример. Номер из 200 символов, номеров 100 000, памяти не более 25 Мбайт. Какая максимальная мощность алфавита?

iБит на номерБайт на номерВсего, Мбайт
102000250≈ 23,8, влезает
112200275≈ 26,2, не влезает

Значит, i = 10, а максимальная мощность 2¹⁰ = 1024.

Минимальная мощность

Почему при «не менее» ответ не 2i? Пример: номер из 400 символов, на один номер нужно не менее 150 байт. При i = 2 получается 100 байт, мало. При i = 3 получается 150 байт, хватает.

Три бита используются при алфавите от 5 до 8 символов: при 4 символах хватило бы двух бит. Поэтому наименьшая мощность 2² + 1 = 5, а не 8.

Попробуй самучебная задача

Номер из 80 символов, на один номер нужно не менее 50 байт. Какова минимальная мощность алфавита?

Раздел 5 из 5

Ловушки и домашка

ЛовушкаКак не попасться
Минимальная мощность при «не менее»2i−1 + 1, а не 2i
Мбайт, Гбайт, Кбайт вперемешкуПриводи всё к байтам
«Семнадцатеричная» и «шестнадцатеричная»Читай слово внимательно: 17 цифр или 16
Дробное число байтЗапись всегда занимает целое число байт, округляй вверх
Округлили i не вверхДля N = 1000 нужно 10 бит, а не 9,97
1000 вместо 1024Здесь всегда 1024
«Всего» и «на одного»Перед ответом перечитай вопрос
Бит и байт в концеПодпиши единицы на каждом шаге

Домашка

Шесть задач с настоящих экзаменов и из банка ФИПИ. Решай на листочке и вписывай ответ.

Примеры и задачи «Попробуй сам» учебные, в домашке задачи с настоящих экзаменов и из банка ФИПИ.