Задание 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 и отделяется от соседних точкой:
Каждый байт — это 8 бит, поэтому весь адрес — это бита. Диапазон 0–255 получается из того, что 8 бит дают различных значений: от 00000000 (0) до 11111111 (255). Перевод байта в двоичную запись — базовая операция всего задания, поэтому иметь под рукой таблицу степеней двойки (128, 64, 32, 16, 8, 4, 2, 1) обязательно.
Пример: . Раскладываем по степеням двойки: , значит в разрядах 128 и 16 стоят единицы, в остальных — нули: 10010000.
Маска подсети и поразрядная конъюнкция
Маска подсети — это тоже 32-битное число, но устроенное жёстко: слева стоят подряд идущие единицы, справа — подряд идущие нули, и нигде между ними единица не чередуется с нулём. Единицы маски отмечают биты адреса сети, нули — биты адреса узла внутри сети. Поэтому маску однозначно задаёт одно число — количество единиц в ней.
Типичные маски и их байтовая запись:
| Единиц всего | Маска (десятично) | Байт с «обрывом» |
|---|---|---|
| 24 | 255.255.255.0 | 00000000 |
| 26 | 255.255.255.192 | 11000000 |
| 28 | 255.255.255.240 | 11110000 |
| 29 | 255.255.255.248 | 11111000 |
Как найти адрес сети: поразрядная конъюнкция
Адрес сети = адрес узла И (поразрядно) маска. Правило конъюнкции по каждому биту: 1 и 1 дают 1, а если хотя бы один бит — 0, результат 0. На практике это означает: там, где в маске единица, бит адреса сохраняется; там, где в маске ноль, бит адреса обнуляется.
Пример: узел 144 = 10010000, маска 248 = 11111000. Первые пять битов совпадают с маской (единицы) и сохраняются, последние три бита обнуляются: 10010000 & 11111000 = 10010000 — в данном случае байт не изменился, потому что три младших бита узла и так были нулями.
Сколько адресов и узлов в подсети
Если в маске единиц, значит нулей — . Эти свободных битов и определяют, сколько разных адресов помещается в подсеть:
Но назначить узлам можно не все эти адреса. Два адреса в любой подсети зарезервированы: адрес, где все свободные биты — нули (это адрес самой сети), и адрес, где все свободные биты — единицы (это широковещательный адрес, broadcast). Реальным узлам достаются только адреса между ними:
Это различие критично для формулировок. Если вопрос звучит как «сколько IP-адресов в этой сети» или «сколько адресов удовлетворяют условию» — считаем все значений, включая адрес сети и broadcast. А если вопрос звучит как «сколько узлов можно подключить к сети» — нужно вычесть эти два служебных адреса.
Таблица: число нулей → шаг подсети → число адресов
| Нулей в маске | Адресов | Узлов | Шаг между сетями |
|---|---|---|---|
| 1 | 2 | 0 | 2 |
| 2 | 4 | 2 | 4 |
| 3 | 8 | 6 | 8 |
| 4 | 16 | 14 | 16 |
| 5 | 32 | 30 | 32 |
| 8 | 256 | 254 | 256 |
| 12 | 4096 | 4094 | 4096 |
«Шаг между сетями» — это разница между началом соседних подсетей одного размера: если подсеть начинается с адреса, кратного , следующая начнётся ровно через адресов. Это удобно для проверки: у сети 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 перебирает все адреса подсети (от адреса сети до адреса сети плюс ), а 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 даёт число из единиц (например, при получаем 111 = 7), а сдвиг << (32 - k) отодвигает эти единицы в старшие разряды — получается маска с единицами слева и нулями справа, как и положено настоящей маске подсети. Условие ip & mask == net проверяет ровно то определение, что дано в условии задачи.
Алгоритм решения задания 10
- Определите подтип вопроса. Если дана сеть (IP-адрес + маска) и спрашивают про адреса или узлы — это первый подтип. Если дан узел и адрес сети, а спрашивают про число масок — второй.
- Найдите байт, где проходит граница маски.Переведите маску в двоичный вид по байтам и найдите тот, в котором единицы сменяются нулями (255 = все единицы, 0 = все нули, полностью его не переводите).
- Посчитайте число свободных битов , где — число единиц в маске. Число адресов в подсети — , число узлов — .
- Переведите в двоичный вид только меняющийся байт исходного IP-адреса — остальные три байта одинаковы для всех адресов подсети, их переводите один раз как константу.
- Переберите все варианты свободных битов (от 0 до ) и для каждого проверьте условие задачи: количество единиц/нулей, наличие подряд идущих битов и так далее.
- Для подтипа «сколько масок» переберите длину маски от 0 до 32, постройте маску сдвигом и сравните с данным адресом сети.
- Запишите ответ в нужной форме. Число — просто цифрами. 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: база
Выучите таблицу степеней двойки от до . Потренируйтесь переводить отдельные байты (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 минуты.