Содержание
Краткая памятка по решению 13 задания на Python
- Разбей IP-адрес и маску на октеты (список из 4 чисел).
- Переведи каждый октет в 8-битный двоичный формат (строка).
- Склей все двоичные строки в одну 32-битную строку.
- Для нахождения адреса сети выполни побитовое И (&) для каждой пары битов.
- Для нахождения broadcast-адреса выполни побитовое ИЛИ (|) адреса сети с инвертированной маской.
- Для подсчёта адресов используй формулу: 2^(32 — кол-во единиц в маске) — 2.
- Проверяй, что маска состоит из последовательных единиц (иначе она некорректна).
- Для проверки вхождения IP в сеть сравни адреса сетей.
- Используй целые числа для побитовых операций, а не строки.
- Всегда проверяй граничные случаи: IP с октетами 0 и 255.
Всё о задании №13 на ЕГЭ по информатике (2026)
Задание №13 на ЕГЭ проверяет твоё умение работать с IP-адресами и масками сети. Это типичная задача по теме «Компьютерные сети», и она стабильно встречается каждый год. На выполнение этого задания обычно отводится около 3 минут, и за правильный ответ ты получишь 1 первичный балл.
В этом задании могут попасться разные форматы вопросов, но все они крутятся вокруг сетевых адресов и масок. Вот основные виды задач:
- Подсчёт количества адресов в сети. Нужно определить, сколько всего IP-адресов входит в данную сеть по заданной маске. В некоторых вариантах могут попросить посчитать именно количество доступных для узлов адресов (то есть исключить адрес сети и широковещательный адрес).
- Определение маски сети. Дают IP-адрес узла и адрес сети, а тебя просят найти маску подсети. Чаще всего спрашивают конкретный байт маски – например, третий слева.
- Нахождение адреса сети или широковещательного адреса. Нужно по IP-адресу и маске вычислить, какой адрес у самой сети или какой адрес является широковещательным (broadcast).
- Проверка принадлежности IP-адреса к сети. Дают IP-адрес и сеть с маской, а задача – определить, входит ли этот IP-адрес в указанную сеть.
В этой статье мы начнём с разбора задачи из демоверсии ФИПИ – официального открытого варианта ЕГЭ. Мы пошагово решим её с помощью языка программирования Python, подробно объясняя каждое действие, чтобы всё стало максимально понятно даже тем, кто только начинает изучать сети.
А затем мы разберём другие типовые задачи, которые могут встретиться под номером 13, чтобы ты был готов ко всем вариантам на экзамене.
Теория для решения задания №13 (ЕГЭ по информатике)
Задание №13 на ЕГЭ по информатике связано с сетями и IP-адресами. Чтобы успешно его решать, нужно понимать, как устроены IP-адреса, что такое маска сети, как делится адрес на сеть и узел, и как вычислять адрес сети. Всё это не так сложно, если разобраться в базовых правилах – сейчас мы объясним их шаг за шагом простыми словами.
Что такое IP-адрес?
IP-адрес – это уникальный адрес, который получает каждое устройство в компьютерной сети. Он состоит из 4 чисел от 0 до 255, разделённых точками. Например:
Внутри компьютеров этот адрес хранится как 32-битное двоичное число (то есть 4 группы по 8 бит, всего 32 бита).
Как узнать, где заканчивается адрес сети и начинается адрес узла?
Для этого используется маска сети. Маска сети – это тоже 32-битное число, которое выглядит как IP-адрес. Она показывает, сколько бит от IP-адреса относятся к сети, а сколько – к узлам.
- Где стоят единицы (1) – это часть адреса сети.
- Где стоят нули (0) – это часть адреса узла.
Как получить адрес сети?
Чтобы вычислить адрес сети, нужно выполнить поразрядную конъюнкцию (побитовое И) между IP-адресом и маской сети. Поразрядная конъюнкция – это операция, которая сравнивает биты по одному:
- 1 и 1 → 1
- 1 и 0 → 0
- 0 и 1 → 0
- 0 и 0 → 0
Как определить количество адресов в сети?
Количество адресов в сети зависит от количества нулей в маске сети. Например, если в маске, например, 3 нуля, значит в сети 2³ = 8 адресов.
Пример: маска 255.255.255.248 (в двоичном виде это 29 единиц и 3 нуля) → в сети будет 2³ = 8 адресов.
Задача из демоверсии ФИПИ. Подсчёт количество адресов в сети
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Сколько в этой сети IP-адресов, для которых количество единиц в двоичной записи IP-адреса не кратно 4? В ответе укажите только число.
решить очень просто с помощью языка программирования Python
Эту задачу можно. Всё решение удобно представить в виде 5 простых шагов.
Чтобы не вычислять IP-адреса вручную, мы воспользуемся специальным модулем ipaddress. Он уже встроен в Python и сам умеет находить все адреса в сети и работать с ними, так что нам не придётся ничего считать руками.
Здесь мы подключаем модуль ipaddress и создаём объект сети. С помощью функции ip_network() мы говорим Python’у: «Вот IP-адрес и маска – посчитай сам все адреса в этой сети».
Эта строка запускает цикл, который по очереди перебирает каждый IP-адрес из сети. То есть, программа сама «проходит» по всем адресам один за другим.
- Сначала превращаем IP-адрес в число: int(ip). Например, из вида 122.159.136.144 он превращается во большое число.
- Потом переводим это число в двоичный вид с помощью bin(). Двоичный вид – это запись из нулей и единиц.
- И наконец, с помощью.count(‘1’) считаем, сколько единиц в этой записи.
По условию задачи нам нужны только те адреса, где количество единиц не делится на 4. Если условие выполняется – мы увеличиваем наш счётчик count на 1.
Когда цикл закончит перебор всех адресов, программа выведет, сколько адресов подошли под условие задачи.
Определение маски
В сетях TCP/IP «маска» показывает, какая часть IP‑адреса – это сеть, а какая – конкретный компьютер в ней. Маска записывают точно так же, как IP: четыре числа от 0 до 255. В двоичном виде сначала идут единицы (сетевой участок), затем — нули (узловой участок). Чтобы получить адрес сети, нужно выполнить побитовое «И» между IP-адресом устройства и маской.
Например, если IP-адрес узла равен 10.14.35.78, а маска равна 255.255.248.0, то адрес сети равен 10.14.32.0.
У компьютера IP‑адрес 172.16.205.14, а адрес сети – 172.16.192.0. Найдите третий байт маски (считая слева, в десятичном виде). Запишите ответ одним числом.
Перед тем как приступить к решению, давайте разберёмся, как это работает. У нас есть два числа: байт из IP‑адреса и байт из адреса сети. По ним мы можем легко восстановить маску сети. Делать это будем пошагово и максимально просто:
- Переведём нужные байты в «машинный язык» – двоичную систему (нули и единицы).
- Посмотрим, как работает операция побитового «И» (AND): только когда обе цифры равны 1, результат будет 1. Во всех других случаях – 0.
- Определим, какие биты в маске дают нужный результат.
- Переведём полученную маску обратно в привычный десятичный вид.
Шаг 1. Записываем уравнение для байтов.
Для каждого байта справедливо такое правило:
- IP3 – третий байт IP‑адреса (в нашем случае это 205);
- N3 – третий байт адреса сети (у нас это 192);
- M3 – третий байт маски, который нужно найти.
Шаг 2. Переводим числа в двоичный вид.
Теперь запишем наши числа в виде нулей и единиц – так, как с ними работает компьютер:
- 20510 = 110011012
- 19210 = 110000002
Шаг 3. Разбираем побитовую операцию и находим маску.
Давайте посмотрим, как работает операция «И» по битам:
Первые два бита слева равны 1 и в IP‑адресе, и в результате – значит, и в маске они тоже 1. Все оставшиеся биты в результате равны 0, значит, в маске на этих позициях стоят нули. В итоге маска получается такой: 110000002.
Шаг 4. Переводим маску в десятичное число.
Теперь осталось перевести нашу маску из двоичной записи обратно в привычный десятичный вид: 110000002 = 128 + 64 = 19210.
Нахождение адреса сети или broadcast-адреса
В сетях адрес сети определяют с помощью IP-адреса устройства и маски сети. Нужно просто применить поразрядное «И» к каждому байту.
- IP-адрес: 150.25.199.18
- Маска: 255.255.224.0
В таблице найдите числа из адреса сети и запишите ответ, указав соответствующие буквы.
Теперь давайте решим задачу с помощью Python. Мы воспользуемся встроенным модулем ipaddress – он сам вычислит адрес сети по заданным IP-адресу и маске. Наша задача – просто получить результат и по таблице выбрать правильный ответ.
Почему указываем False? Это нужно, чтобы Python правильно воспринял обычный IP-адрес узла, а не требовал ввода уже готового адреса сети.
Когда выполним этот код, программа напечатает найденный адрес сети. В нашем примере это будет: 150.25.192.0.
Шаг 2. Разбиваем адрес сети на отдельные числа. Результат адреса сети – это просто четыре числа (байта), разделённых точками:
- 150
- 25
- 192
- 0
Шаг 3. Составляем ответ по таблице из задания. Теперь берём каждое из этих чисел и находим соответствующую букву в таблице. Для адреса сети 150.25.192.0 это будет так:
- 150 → E
- 25 → A
- 192 → G
- 0 → F
EAGF
Осталось только собрать буквы в том же порядке, как идут байты в адресе:.
Проверка на то, входит ли IP-адрес в сеть
В терминологии сетей TCP/IP адрес сети получается в результате применения поразрядной конъюнкции (операции «И») между IP-адресом и маской сети. Чтобы проверить, входит ли заданный IP-адрес в сеть, необходимо сравнить его адрес сети с адресом сети из условия задачи.
Сеть задана адресом 192.168.64.0 и маской 255.255.192.0. Определите, входит ли в эту сеть узел с IP-адресом 192.168.95.23. Если входит – запишите в ответ слово ДА, если не входит – НЕТ.
- 192 → 11000000
- 168 → 10101000
- 64 → 01000000
- 0 → 00000000
- 255 → 11111111
- 255 → 11111111
- 192 → 11000000
- 0 → 00000000
- 192 → 11000000
- 168 → 10101000
- 95 → 01011111
- 23 → 00010111
Шаг 2. Применяем операцию побитового «И» между IP-адресом сети и маской.
Для этого нужно поразрядно сравнивать биты IP-адреса и маски. Если на соответствующей позиции и в IP-адресе, и в маске стоит единица, то результат будет единицей, в противном случае – ноль.
Как видим, результат совпадает с IP-адресом сети, который был дан в задаче – 192.168.64.0.
Как видим, результат совпадает с адресом сети 192.168.64.0, то есть узел 192.168.95.23 находится в этой сети.
Результат выполнения программы будет ДА, так как IP-адрес 192.168.95.23 входит в указанную сеть.
Часто задаваемые вопросы по решению 13 задания ЕГЭ по информатике на Python
Вопрос: Какой тип данных использовать для хранения IP-адреса в Python?
Ответ: Удобнее всего использовать строку, а затем преобразовывать её в список целых чисел для битовых операций.
Вопрос: Как перевести IP-адрес в двоичный вид для вычислений?
Ответ: Каждый октет (число от 0 до 255) нужно перевести в 8-битное двоичное представление с помощью функции format(octet, ’08b’).
Вопрос: Как вычислить адрес сети по IP и маске?
Ответ: Выполните побитовое И (оператор &) между IP-адресом и маской, представленными в двоичном виде.
Вопрос: Как определить количество узлов в сети по маске?
Ответ: Количество узлов = 2^(32 — длина маски) — 2, где длина маски — количество единиц в маске.
Вопрос: Как найти broadcast-адрес?
Ответ: Выполните побитовое ИЛИ (оператор |) между адресом сети и инвертированной маской (побитовое НЕ).
Вопрос: Как проверить, принадлежит ли IP-адрес заданной сети?
Ответ: Вычислите адрес сети для этого IP и сравните его с адресом целевой сети. Если они совпадают, то IP принадлежит сети.
Вопрос: Что такое маска переменной длины (VLSM) и как её учитывать?
Ответ: VLSM позволяет использовать разные маски для подсетей. В задачах ЕГЭ маска обычно задана явно, и её нужно просто применить.
Вопрос: Как обрабатывать IP-адреса с нестандартными октетами (например, 0 или 255)?
Ответ: Это стандартные адреса (адрес сети и broadcast), их нужно обрабатывать как обычные числа, алгоритм не меняется.
Вопрос: Какой самый частый тип ошибки при решении 13 задания на Python?
Ответ: Ошибка в преобразовании строки в двоичный формат или неправильное применение побитовых операций к строкам вместо чисел.
Вопрос: Можно ли использовать библиотеку ipaddress для решения?
Ответ: Да, библиотека ipaddress упрощает работу, но на экзамене её может не быть, поэтому лучше освоить ручной метод.





















