← Все вопросы

Задание 11 КЕГЭ: путаюсь, когда брать ceil логарифма, а когда нет — про длину кода

Задан 18 месяцев назад672 просмотров2 ответа
6

Задание 11 про объём информации: дано количество объектов (например, сотрудников или вариантов пароля), надо найти, сколько бит нужно на код одного, а потом сколько байт на всю запись. Я путаюсь, когда округлять вверх количество бит на символ, а когда нет. Можете разложить по шагам?

2 ответа

12
✓ Принятый ответ — помог автору

Чёткий алгоритм для задания 11:

  1. Бит на один элемент: нужно наименьшее целое 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
  1. Бит на всю запись: умножь биты на символ на количество символов в записи (например, пароль из 6 символов → i * 6 бит).
  2. Байт: раздели биты на 8 и округли ВВЕРХ (целое число байт, неполный байт занимает целый):
import math
bity_zapisi = i * 6
byte = math.ceil(bity_zapisi / 8)
print(byte, 'байт на запись')
  1. На всех: умножь байты записи на количество записей.

Главное правило: и биты на символ, и байты на запись округляются ВВЕРХ. Вниз никогда — "не хватит места".

4

Запомни степени двойки наизусть, чтобы не считать: 2^6=64, 2^7=128, 2^8=256, 2^9=512, 2^10=1024. Тогда "сколько бит на N вариантов" видишь сразу: 250 вариантов → между 128 и 256 → 8 бит. Это самая частая операция в задании 11, и устный счёт по степеням двойки экономит время.

Ваш ответ

Войдите, чтобы ответить на вопрос.