ЕГЭ
Информатика
2 сентября 2026
19 минут чтения

Задание 10 ЕГЭ по информатике: маска подсети

Задание 10 ЕГЭ по информатике (КЕГЭ) — это маска подсети и IP-адрес: по проверяемому элементу содержания 1.2 оно проверяет умение понимать принципы адресации в сети и работать с поразрядной конъюнкцией. Задание базового уровня сложности, за него дают 1 первичный балл, и оно, как и все 27 заданий КЕГЭ, оценивается автоматически по краткому ответу — файла к нему не прилагается. Ответ — либо число, либо IP-адрес без разделителей (без точек). В 2027 году тема маски подсети переехала с позиции 13 на позицию 10, а уровень задания понизился с повышенного до базового: в демоверсии 2027 года это задание 10. В статье — вся теория по IPv4 и маскам, приём «переводим только тот байт, который меняется», рабочий Python-код и три разбора реальных заданий из открытого банка ФИПИ с проверенными ответами. Потренироваться можно на реальных заданиях 10 ЕГЭ по информатике онлайн — с мгновенной проверкой ответа.

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

Раздел кодификатора — «Цифровая грамотность», проверяемый элемент содержания 1.2 — принципы адресации в сети, устройство IP-адреса и маски подсети. Само задание построено вокруг одной операции — поразрядной конъюнкции адреса узла и маски сети.

ПараметрЗначение
Максимальный балл1 первичный (частичного зачёта нет: ответ либо полностью совпал с эталоном, либо 0)
Уровень сложностиБазовый (Б) — одно из 11 заданий этого уровня в работе
Формат ответаКраткий: число либо IP-адрес без разделителей (без точек)
Раздел кодификатора1. Цифровая грамотность; КЭС 1.2
Нужен ли файл / спец. ПОНет — файл к заданию не прилагается, специализированное ПО не требуется, решение удобно набросать на черновике
Примерное время выполнения3 минуты (по спецификации ФИПИ)
Связанные заданияЗадание 22 (многопроцессорные системы, тоже раздел «Цифровая грамотность»), задание 4 (кодирование, работа с двоичной записью)

Тренируйтесь на реальных заданиях

Задания 10 ЕГЭ по информатике из открытого банка ФИПИ с мгновенной проверкой ответа. Решаем, ошибаемся, разбираем — бесплатно.

Как выглядит формулировка

Условие задания 10 почти всегда начинается с одного и того же определяющего абзаца — он не меняется от варианта к варианту и задаёт всю терминологию:

А дальше идёт один из двух подтипов вопроса. В банке заданий этой линии их ровно два:

Встречаются и вариации, где ответом служит сам IP-адрес (например, адрес сети или конкретный узел, удовлетворяющий условию), а не число. Для таких формулировок ФИПИ прямо оговаривает форму записи — «в ответе укажите найденный IP-адрес без разделителей». Это значит: четыре числа от 0 до 255 пишутся подряд, без точек и без пробелов — например, адрес 192.168.1.1 нужно записать как 19216811. Если же ответ — количество адресов или количество масок, в ответ идёт обычное натуральное число, тоже без пробелов и лишних символов.

Теория: всё, что нужно для задания 10

Структура IPv4-адреса

IPv4-адрес — это 4 байта (32 бита), каждый из которых записывается десятичным числом от 0 до 255 и отделяется от соседних точкой:

192байт 1.168байт 2.1байт 3.1байт 4\underbrace{192}_{\text{байт 1}}.\underbrace{168}_{\text{байт 2}}.\underbrace{1}_{\text{байт 3}}.\underbrace{1}_{\text{байт 4}}

Каждый байт — это 8 бит, поэтому весь адрес — это 4×8=324 \times 8 = 32 бита. Диапазон 0–255 получается из того, что 8 бит дают 28=2562^8 = 256 различных значений: от 00000000 (0) до 11111111 (255). Перевод байта в двоичную запись — базовая операция всего задания, поэтому иметь под рукой таблицу степеней двойки (128, 64, 32, 16, 8, 4, 2, 1) обязательно.

Пример: 14410144_{10}. Раскладываем по степеням двойки: 128+16=144128 + 16 = 144, значит в разрядах 128 и 16 стоят единицы, в остальных — нули: 10010000.

Маска подсети и поразрядная конъюнкция

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

Типичные маски и их байтовая запись:

Единиц всегоМаска (десятично)Байт с «обрывом»
24255.255.255.000000000
26255.255.255.19211000000
28255.255.255.24011110000
29255.255.255.24811111000

Как найти адрес сети: поразрядная конъюнкция

Адрес сети = адрес узла И (поразрядно) маска. Правило конъюнкции по каждому биту: 1 и 1 дают 1, а если хотя бы один бит — 0, результат 0. На практике это означает: там, где в маске единица, бит адреса сохраняется; там, где в маске ноль, бит адреса обнуляется.

адрес сети  =  адрес узла  &  маска\text{адрес сети} \;=\; \text{адрес узла} \;\&\; \text{маска}

Пример: узел 144 = 10010000, маска 248 = 11111000. Первые пять битов совпадают с маской (единицы) и сохраняются, последние три бита обнуляются: 10010000 & 11111000 = 10010000 — в данном случае байт не изменился, потому что три младших бита узла и так были нулями.

Сколько адресов и узлов в подсети

Если в маске mm единиц, значит нулей — k=32mk = 32 - m. Эти kk свободных битов и определяют, сколько разных адресов помещается в подсеть:

адресов в подсети=2k=232m\text{адресов в подсети} = 2^{k} = 2^{32-m}

Но назначить узлам можно не все эти адреса. Два адреса в любой подсети зарезервированы: адрес, где все свободные биты — нули (это адрес самой сети), и адрес, где все свободные биты — единицы (это широковещательный адрес, broadcast). Реальным узлам достаются только адреса между ними:

узлов в подсети=2k2\text{узлов в подсети} = 2^{k} - 2

Это различие критично для формулировок. Если вопрос звучит как «сколько IP-адресов в этой сети» или «сколько адресов удовлетворяют условию» — считаем все 2k2^k значений, включая адрес сети и broadcast. А если вопрос звучит как «сколько узлов можно подключить к сети» — нужно вычесть эти два служебных адреса.

Таблица: число нулей → шаг подсети → число адресов

Нулей в маске kkАдресов 2k2^kУзлов 2k22^k - 2Шаг между сетями
1202
2424
3868
4161416
5323032
8256254256
12409640944096

«Шаг между сетями» — это разница между началом соседних подсетей одного размера: если подсеть начинается с адреса, кратного 2k2^k, следующая начнётся ровно через 2k2^k адресов. Это удобно для проверки: у сети 122.159.136.144/29 (29 единиц, 3 нуля) шаг равен 8, и правда, 144 кратно 8.

Главный приём: переводите только тот байт, который меняется

Маска почти никогда не «режет» адрес посередине байта на всех четырёх байтах сразу — она задаёт границу ровно в одном байте (том, что соответствует остатку от деления числа единиц на 8), а все байты левее полностью фиксированы (255), все байты правее — полностью свободны (0). Значит, переводить в двоичный вид нужно только один байт — тот, где проходит граница маски. Остальные три байта одинаковы у всех адресов подсети, и их можно вообще не трогать.

Пример: маска 255.255.255.248. Первые три байта маски — 11111111, значит первые три байта адреса фиксированы такими, какие они в исходном IP. Только четвёртый байт маски — 11111000 — содержит границу: 5 единиц и 3 нуля. Значит, свободны ровно 3 младших бита последнего байта, а первые три байта адреса для всех адресов подсети одинаковы и участвуют в подсчёте «как есть», без перевода в двоичный вид — если только вопрос не спрашивает именно про них.

Отсюда практика: если условие спрашивает «сколько единиц/нулей в адресе», для трёх фиксированных байтов количество единиц считается один раз и прибавляется как константа ко всем 8 (или сколько там) вариантам четвёртого байта. Пересчитывать три фиксированных байта заново для каждого из вариантов — пустая трата времени.

Python: побитовые операции и перебор масок

Все вычисления задания 10 сводятся к трём операциям Python: собрать 32-битное число из четырёх байтов, применить & (побитовое И) и построить маску сдвигом <<. Вот рабочий шаблон для подтипа «дана сеть — считаем адреса по условию»:

def ip_to_int(a, b, c, d):
    return (a << 24) | (b << 16) | (c << 8) | d

ip = ip_to_int(122, 159, 136, 144)
mask = ip_to_int(255, 255, 255, 248)
net = ip & mask

host_bits = 32 - bin(mask).count("1")
count = 0
for k in range(2 ** host_bits):
    addr = net + k
    ones = bin(addr).count("1")
    if ones % 4 != 0:
        count += 1

print(count)

Идея: net + k перебирает все адреса подсети (от адреса сети до адреса сети плюс 2host_bits12^{\text{host\_bits}} - 1), а bin(addr).count("1") считает единицы в двоичной записи. Функция bin() в Python сама убирает ведущие нули, но на подсчёт количества единиц это не влияет.

Для подтипа «по узлу и адресу сети найти число масок» перебор идёт не по адресам, а по длине маски — от 0 до 32:

ip = ip_to_int(153, 172, 3, 8)
net = ip_to_int(153, 172, 3, 0)

count = 0
for k in range(33):
    mask = ((1 << k) - 1) << (32 - k) if k > 0 else 0
    if ip & mask == net:
        count += 1

print(count)

Здесь (1 << k) - 1 даёт число из kk единиц (например, при k=3k=3 получаем 111 = 7), а сдвиг << (32 - k) отодвигает эти единицы в старшие разряды — получается маска с kk единицами слева и нулями справа, как и положено настоящей маске подсети. Условие ip & mask == net проверяет ровно то определение, что дано в условии задачи.

Алгоритм решения задания 10

  1. Определите подтип вопроса. Если дана сеть (IP-адрес + маска) и спрашивают про адреса или узлы — это первый подтип. Если дан узел и адрес сети, а спрашивают про число масок — второй.
  2. Найдите байт, где проходит граница маски.Переведите маску в двоичный вид по байтам и найдите тот, в котором единицы сменяются нулями (255 = все единицы, 0 = все нули, полностью его не переводите).
  3. Посчитайте число свободных битов k=32mk = 32 - m, где mm — число единиц в маске. Число адресов в подсети — 2k2^k, число узлов — 2k22^k - 2.
  4. Переведите в двоичный вид только меняющийся байт исходного IP-адреса — остальные три байта одинаковы для всех адресов подсети, их переводите один раз как константу.
  5. Переберите все варианты свободных битов (от 0 до 2k12^k - 1) и для каждого проверьте условие задачи: количество единиц/нулей, наличие подряд идущих битов и так далее.
  6. Для подтипа «сколько масок» переберите длину маски kk от 0 до 32, постройте маску сдвигом и сравните IP&маска\text{IP} \,\&\, \text{маска} с данным адресом сети.
  7. Запишите ответ в нужной форме. Число — просто цифрами. IP-адрес — без точек и пробелов, подряд все четыре десятичных значения.

Закрепите приём на практике

Прорешайте подряд десяток заданий на маску подсети — и перевод байта в двоичный вид займёт секунды. Задания ЕГЭ по информатике из банка ФИПИ с проверкой ответа — на Repet.ai.

Примеры с разбором

Пример 1. Считаем адреса по свойству числа единиц

Пример задания

Реальное задание из открытого банка ФИПИ

В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 122.159.136.144 и маской сети 255.255.255.248. Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 4? В ответе укажите только число.

Пример 2. Ищем возможные маски по адресу узла и адресу сети

Пример задания

Реальное задание из открытого банка ФИПИ

В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Для узла с IP-адресом 153.172.3.8 адрес сети равен 153.172.3.0. Для скольких различных значений маски это возможно? В ответе запишите только число.

Пример 3. Ищем экстремум — максимум нулей в адресе

Пример задания

Реальное задание из открытого банка ФИПИ

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

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

Как задание 10 связано с остальным экзаменом

Задание 10 стоит особняком — оно единственное на КЕГЭ, где вопрос посвящён именно сетевой адресации. Но приёмы работы с двоичной записью, которые оно тренирует, пригодятся и в других заданиях:

  • Задание 4 — тоже требует уверенного перевода чисел в двоичную запись, только в контексте кодирования и условия Фано.
  • Задание 9 — предыдущая линия варианта: обработка числовой информации в электронных таблицах, последнее задание, для которого нужен компьютер, перед блоком «на черновике».
  • Задание 11 — следующая линия варианта: информационный объём сообщения, тоже счёт битов и степеней двойки.
  • Задание 22 — многопроцессорные системы, тот же раздел кодификатора «Цифровая грамотность».

Полезные ссылки по теме:

План подготовки

Неделя 1: база

Выучите таблицу степеней двойки от 212^1 до 2162^{16}. Потренируйтесь переводить отдельные байты (0–255) в двоичный вид без калькулятора — 15–20 чисел в день. Разберите операцию поразрядной конъюнкции на 5–7 маленьких примерах (можно на 4-битных числах, чтобы не отвлекаться на длину записи).

Неделя 2: подтип «дана сеть»

Решите 10–15 заданий подтипа «сколько адресов удовлетворяют условию». На каждом сначала найдите байт с границей маски и зафиксируйте, сколько битов свободно, и только потом считайте условие. Обязательно проверяйте себя: пишите к каждому заданию маленькую Python-программу с перебором и сверяйте с ручным счётом.

Неделя 3: подтип «сколько масок»

Разберите 8–10 заданий на поиск числа возможных масок по узлу и адресу сети. Отработайте нахождение нижней границы (по последней единице адреса сети) и верхней границы (по первому расхождению узла и сети) как отдельный, самостоятельный навык.

Неделя 4: смешанная практика и скорость

Пройдите пробный экзамен КЕГЭ целиком, засекая время на задание 10 отдельно. Цель — укладываться в 3 минуты на задание (это и есть примерное время выполнения задания по спецификации ФИПИ), включая проверку ответа и запись в нужном формате (число или IP-адрес без разделителей).

Проверьте себя прямо сейчас

Решите подборку заданий 10 из открытого банка ФИПИ и сразу узнайте, где ошиблись.

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

Часто задаваемые вопросы

Маска подсети — это 32-битное число, в котором слева стоят подряд идущие единицы, а справа — подряд идущие нули. Единицы показывают, какая часть IP-адреса относится к адресу сети, а нули — какая часть отведена под номер узла внутри этой сети. Например, маска 255.255.255.0 в двоичном виде — 24 единицы и 8 нулей: первые три байта задают сеть, последний байт — номер узла.

Нужно применить поразрядную конъюнкцию (побитовое И) к адресу узла и маске: там, где в маске стоит единица, бит адреса сохраняется без изменений, а там, где в маске ноль, бит адреса обнуляется. Проще всего перевести в двоичный вид только тот байт, где маска меняется с единиц на нули, — остальные байты либо полностью сохраняются (маска 255), либо полностью обнуляются (маска 0).

Если в маске k нулей, то всего в подсети 2^k адресов, но реально назначить узлам можно только 2^k − 2, потому что два адреса зарезервированы: адрес со всеми нулями в свободной части — это адрес самой сети, а адрес со всеми единицами — широковещательный (broadcast) адрес. Если вопрос задания спрашивает про количество IP-адресов, а не про количество узлов, вычитать 2 не нужно.

Ответ всегда краткий и всегда без пробелов. Если спрашивают число (количество адресов, узлов, масок или сумму октетов адреса сети, как в демоверсии 2027 года), его пишут обычными цифрами. Если ответом служит сам IP-адрес, ФИПИ прямо требует записать его без разделителей, то есть без точек: адрес 192.168.1.1 записывается как 19216811 — четыре десятичных значения подряд.

В первом подтипе дана готовая сеть — IP-адрес и маска, — и нужно посчитать, сколько адресов подсети удовлетворяют какому-то условию (например, чётности суммы единиц или наличию трёх единиц подряд). Во втором подтипе, наоборот, дан адрес узла и адрес сети, а найти нужно, скольким различным маскам такое соответствие возможно. В демоверсии 2027 года встретился третий подтип: найти адрес сети и записать сумму числовых значений его октетов. Ход решения у всех трёх подтипов один — поразрядная конъюнкция адреса узла и маски.

Маска задаёт границу ровно в одном байте — байты левее этой границы всегда состоят из одних единиц маски и полностью сохраняются, байты правее состоят из одних нулей маски и полностью обнуляются. Значит, у всех адресов одной подсети три из четырёх байтов одинаковы, и переводить их в двоичный вид заново для каждого варианта не нужно — это только увеличивает риск арифметической ошибки.

Да, экзамен сдаётся за компьютером, и в числе доступных сред — Python. Но задание 10 не требует прикреплённого файла и обычно решается быстрее вручную, если владеть приёмом «переводим только меняющийся байт». Python удобно использовать для самопроверки при подготовке — написать перебор и сверить с результатом, полученным на бумаге.

Задание 10 относится к разделу «Цифровая грамотность», проверяемый элемент содержания — 1.2, посвящённый принципам адресации в сети и работе с IP-адресами и масками подсети. Проверяемое требование — 1.2. Уровень сложности — базовый, за верный ответ дают 1 первичный балл, примерное время выполнения — 3 минуты.