← Все вопросы
Задание 11 КЕГЭ: путаюсь, когда брать ceil логарифма, а когда нет — про длину кода
6
Задание 11 про объём информации: дано количество объектов (например, сотрудников или вариантов пароля), надо найти, сколько бит нужно на код одного, а потом сколько байт на всю запись. Я путаюсь, когда округлять вверх количество бит на символ, а когда нет. Можете разложить по шагам?
2 ответа
12
✓ Принятый ответ — помог автору
Чёткий алгоритм для задания 11:
- Бит на один элемент: нужно наименьшее целое
i, при котором2^i >= N(число вариантов). Это всегда округление ВВЕРХ. Перебором так:
N = 250 # например, 250 вариантов символа
i = 0
while 2 ** i < N:
i += 1
print(i, 'бит на символ') # 8, т.к. 2^7=128 < 250 <= 256=2^8
- Бит на всю запись: умножь биты на символ на количество символов в записи (например, пароль из 6 символов →
i * 6бит). - Байт: раздели биты на 8 и округли ВВЕРХ (целое число байт, неполный байт занимает целый):
import math
bity_zapisi = i * 6
byte = math.ceil(bity_zapisi / 8)
print(byte, 'байт на запись')
- На всех: умножь байты записи на количество записей.
Главное правило: и биты на символ, и байты на запись округляются ВВЕРХ. Вниз никогда — "не хватит места".
4
Запомни степени двойки наизусть, чтобы не считать: 2^6=64, 2^7=128, 2^8=256, 2^9=512, 2^10=1024. Тогда "сколько бит на N вариантов" видишь сразу: 250 вариантов → между 128 и 256 → 8 бит. Это самая частая операция в задании 11, и устный счёт по степеням двойки экономит время.
Ваш ответ
Войдите, чтобы ответить на вопрос.