5 мин чтения

Задание 10 ЕГЭ по информатике 2027 — маска подсети, адрес сети и сумма октетов

Разбор задания 10 ЕГЭ по информатике 2027: маска подсети, адрес сети через поразрядное AND, сумма октетов из демоверсии (ответ 516), число узлов и восстановление маски. Код на Python.

С 2027 года задание 10 ЕГЭ по информатике проверяет работу с маской подсети: по адресу узла и маске найти адрес сети, число узлов или восстановить байт маски. В демоверсии 2027 дан адрес 192.168.159.86 и маска 255.255.252.0, а в ответ просят сумму октетов адреса сети — 516. Тема переехала с номера 13, где была до 2027 года; поиск в текстовом процессоре, который раньше шёл под номером 10, из экзамена убран.

Ниже — условие демо, минимум теории, разбор по октетам, код на Python и вариации вопроса из сборников и прежних демоверсий, где тема шла под номером 13. Подробная теория про IP-адреса и побитовые операции с таблицами на все случаи — в статье о задании 13 2026 года; здесь она сжата до того, что нужно для решения за три минуты.

Условие демоверсии 2027

В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.

Даны адрес узла 192.168.159.86 и маска 255.255.252.0. Найдите адрес сети. В ответе укажите сумму числовых значений октетов найденного IP-адреса. Например, если бы найденный адрес был равен 100.20.3.4, в ответе следовало бы записать 127.

Ответ ФИПИ: 516.

Минимум теории

IP-адрес — 32 бита, записанные четырьмя числами от 0 до 255 через точку. Каждое число — октет, восемь бит. Маска — тоже 32 бита, но устроена строго: сначала подряд единицы, потом подряд нули. Единицы отмечают часть адреса, общую для всей сети, нули — часть, уникальную для узла.

Из-за правила «единицы слева, нули справа» октет маски может принимать только девять значений:

Единиц в октетеДвоичная записьОктет маски
0000000000
110000000128
211000000192
311100000224
411110000240
511111000248
611111100252
711111110254
811111111255

Адрес сети — это адрес узла AND маска: по каждому биту 1 AND 1 = 1, остальное 0. Удобнее считать по октетам: там, где октет маски 255, октет адреса остаётся как есть; где 0 — становится нулём; и только один «смешанный» октет приходится считать по битам.

Разбор демо по октетам

Маска 255.255.252.0: первые два октета полные, третий смешанный (252 — шесть единиц и два нуля), четвёртый нулевой.

ОктетАдрес узлаМаскаANDОктет сети
1192255берём как есть192
2168255берём как есть168
3159 = 10011111252 = 1111110010011100156
4860обнуляем0

Третий октет: 159 в двоичной записи 10011111, маска 11111100 оставляет шесть старших битов и обнуляет два младших — получается 10011100 = 128 + 16 + 8 + 4 = 156. Адрес сети 192.168.156.0, сумма октетов 192 + 168 + 156 + 0 = 516.

Проверка по смыслу: адрес сети всегда «не больше» адреса узла в каждом октете и заканчивается нулями там, где маска нулевая. 156 ≤ 159, последний октет 0 — сходится.

Решение на Python

def octets(text):
    return [int(part) for part in text.split(".")]

def net(address, mask):
    a = octets(address)
    m = octets(mask)
    return [a[i] & m[i] for i in range(4)]

address = "192.168.159.86"
mask = "255.255.252.0"

network = net(address, mask)
print(".".join(str(v) for v in network))   # 192.168.156.0
print(sum(network))                        # 516

Оператор & — поразрядная конъюнкция целых чисел, он делает ровно то, что требует условие. Разбиение по точкам даёт четыре октета, zip или индекс — их попарное AND. Для задания из демо код печатает 192.168.156.0 и 516.

Вариации вопроса

В сборниках и демоверсиях прошлых лет (там тема шла под номером 13) спрашивали не сумму октетов, а одно из следующего:

ВопросКак считать
Число узлов в сети2^k − 2, где k — число нулей в маске
Наименьший (наибольший) байт маски по адресу узла и адресу сетиперебор девяти допустимых байтов
В одной ли подсети два узласравнить адреса сетей обоих узлов при одной маске
Наибольший адрес, который можно назначить компьютеру (демо 2026)широковещательный адрес минус один; в ответ — без точек
Сколько адресов сети с условием на двоичную запись (демо 2024–2025)перебрать все адреса сети и проверить условие

Число узлов. В маске 255.255.252.0 единиц 8 + 8 + 6 = 22, нулей 10. Адресов в сети 2^10 = 1024, из них два заняты — адрес сети и широковещательный, — остаётся 1022 узла.

ones = sum(bin(value).count("1") for value in octets(mask))
print(2 ** (32 - ones) - 2)                # 1022

Восстановить байт маски. Пусть известны адрес узла 192.168.159.86 и адрес сети 192.168.156.0, а спрашивают наименьшее значение третьего байта маски. Перебираем допустимые байты от меньшего к большему и берём первый, при котором AND даёт нужный адрес:

MASKS = [0, 128, 192, 224, 240, 248, 252, 254, 255]
network = octets("192.168.156.0")
for byte in MASKS:
    if net(address, "255.255." + str(byte) + ".0") == network:
        print(byte)                        # 252
        break

Здесь break уместен: перебор идёт по возрастанию байта, и первый подошедший — наименьший. Если спрашивают наибольший байт, перебирают список в обратном порядке.

Одна ли подсеть. Два узла в одной сети, если их адреса сетей при данной маске совпадают: net(a, mask) == net(b, mask).

Ещё один пример: три вопроса к одной маске

Узел 10.8.247.102, маска 255.255.248.0. Смешанный октет — третий: 248 = 11111000, пять единиц и три нуля.

ВопросРасчётОтвет
Адрес сети247 = 11110111, AND 11111000 = 11110000 = 24010.8.240.0
Сумма октетов адреса сети10 + 8 + 240 + 0258
Число узловнулей в маске 8 + 3 = 11, 2^11 − 22046
В одной ли сети с 10.8.250.17250 AND 248 = 248, адрес сети 10.8.248.0нет

Код из раздела выше с этими адресом и маской печатает 10.8.240.0, 258 и 2046; для второго узла функция net возвращает [10, 8, 248, 0], и сравнение списков даёт False. Три вопроса — один и тот же расчёт AND по октетам, меняется только последняя строка.

Типичные ошибки

AND посчитан не по битам

159 AND 252 — это не «меньшее из двух» и не остаток от деления. Переведи оба числа в двоичную запись и сравни по разрядам; на Python просто 159 & 252.

Байт маски вне девяти допустимых

Если при восстановлении маски получился байт вроде 250 или 200 — в маске оказались единицы после нулей. Такого не бывает: сверься с таблицей девяти значений.

Забытые два адреса

Число узлов — 2^k − 2, а не 2^k. Адрес сети и широковещательный адрес узлам не выдаются.

В ответе адрес вместо суммы

Демоверсия просит сумму октетов, и 192.168.156.0 в поле ответа — потерянный балл. Перечитай последнюю фразу условия: что именно записать.

Перепутан порядок октетов

Первый октет — самый левый, старший. Маска 255.255.252.0 относится к третьему октету, а не ко второму. При ручном счёте выписывай адрес и маску столбиком друг под другом.

Подборка ошибок по всем номерам — в статье Типичные ошибки на ЕГЭ по информатике.

Тайминг на экзамене

ЭтапВремя
Прочитать условие и выписать адрес с маской30 сек
Найти смешанный октет и посчитать AND1 мин
Собрать ответ в нужной форме30 сек
Итого2–3 мин

Спецификация отводит три минуты. Python здесь не обязателен — ручной счёт одного октета укладывается в минуту, — но с готовой функцией net ошибиться труднее.

Как тренироваться

  1. Реши 10 задач на адрес сети с разными смешанными октетами, пока перевод в двоичную запись и обратно не станет автоматическим. Переводы разобраны в статье о задании 14.
  2. Отдельно — по пять задач на число узлов и на восстановление байта маски: это самые частые вопросы в сборниках.
  3. Выучи девять байтов маски наизусть — они же проверяют ответ на правдоподобие.
  4. Перепроверяй форму ответа: число, адрес, сумма октетов — в разных заданиях разное.

Как изменились остальные номера — в обзоре ЕГЭ по информатике 2027: что изменилось; демозадание в контексте всего варианта — в разборе демоверсии 2027. Соседнее базовое задание на единицы измерения и степени двойки — задание 7. Старый разбор поиска в текстовом процессоре оставлен в блоге как история: этой темы в экзамене 2027 нет.

Короткий итог

Задание 10 в 2027 году — маска подсети: адрес сети считается поразрядным AND по октетам, и в демоверсии в ответ идёт сумма его октетов — 516. Октет маски принимает одно из девяти значений, число узлов — 2^k − 2, байт маски восстанавливают перебором девяти вариантов. Три минуты по спецификации, один балл, базовый уровень.

Задания на маску подсети с автопроверкой есть в TuteMe — под номером 10, в форме демоверсии 2027: адрес сети и сумма его октетов.

Попробовать бесплатно →

Частые вопросы

Что теперь в задании 10 ЕГЭ по информатике

С 2027 года задание 10 — это маска подсети: по адресу узла и маске найти адрес сети, число узлов или байт маски. До 2027 года эта тема была заданием 13 повышенного уровня, а под номером 10 шёл поиск в текстовом процессоре — его из экзамена убрали. Теперь задание базового уровня, 1 балл, 3 минуты по спецификации.

Что спрашивают в демоверсии 2027

Даны адрес узла 192.168.159.86 и маска 255.255.252.0, нужно найти адрес сети и записать в ответ сумму его октетов. Адрес сети — 192.168.156.0, сумма 192 + 168 + 156 + 0 = 516. В демо 2026 (тогда задание 13) спрашивали наибольший IP-адрес, который можно назначить компьютеру, а в демо 2024–2025 — сколько адресов сети обладают заданным свойством двоичной записи.

Как найти адрес сети

Поразрядной конъюнкцией адреса и маски: по каждому октету берётся AND. Там, где октет маски 255, октет адреса сохраняется; где 0 — обнуляется; смешанный октет считают по битам. В демо смешанный третий октет: 159 AND 252 = 156.

Какими бывают октеты маски

Только девятью значениями: 0, 128, 192, 224, 240, 248, 252, 254, 255. В маске единицы идут подряд слева, потом только нули, поэтому «дырявых» масок вроде 255.0.255.0 или 255.255.250.0 не бывает. Если в решении получился другой байт — ошибка в переводе.

Как посчитать число узлов в сети

2^k − 2, где k — число нулей в маске (число битов адреса узла). Два адреса заняты: адрес самой сети (все биты узла нули) и широковещательный (все единицы). Для маски 255.255.252.0 нулей 10, узлов 2^10 − 2 = 1022.

Как восстановить маску по адресу узла и адресу сети

Перебрать девять допустимых байтов для смешанного октета и взять первый, при котором адрес AND маска даёт заданный адрес сети. Если спрашивают наименьшее значение байта — перебор идёт от 0; наибольшее — от 255. Код для этого — в статье.

Как решать задание 10 на Python

Разбить адрес и маску по точкам в списки чисел, применить & к каждой паре октетов, собрать результат. Для суммы октетов — sum, для числа узлов — посчитать единицы в двоичной записи маски через bin(value).count('1'). Весь код — десять строк, в статье он печатает 192.168.156.0 и 516.

Где взять задания по маске для тренировки

В сборниках 2024–2026 годов тема лежит под номером 13 (в 2026 году — повышенного уровня), так что задачи там бывают сложнее демо 2027. Ищи их по теме, а не по номеру. Теория и разбор прежних вопросов — в статье задание 13 ЕГЭ 2026.

Готов применять на практике?

В тренажёре TuteMe — 1250 заданий ЕГЭ по информатике с автоматической проверкой и подробным разбором. AI-помощник подсказывает, где ты ошибаешься, и подбирает задания под твой уровень.

Начать бесплатно →

Не пишешь код? Курс «Python для ЕГЭ» — с нуля, первые два модуля бесплатно.