Решение ЕГЭ по информатике на Python: задание 13, алгоритмы и код

0
38

Краткая памятка по решению 13 задания на Python

  1. Разбей IP-адрес и маску на октеты (список из 4 чисел).
  2. Переведи каждый октет в 8-битный двоичный формат (строка).
  3. Склей все двоичные строки в одну 32-битную строку.
  4. Для нахождения адреса сети выполни побитовое И (&) для каждой пары битов.
  5. Для нахождения broadcast-адреса выполни побитовое ИЛИ (|) адреса сети с инвертированной маской.
  6. Для подсчёта адресов используй формулу: 2^(32 — кол-во единиц в маске) — 2.
  7. Проверяй, что маска состоит из последовательных единиц (иначе она некорректна).
  8. Для проверки вхождения IP в сеть сравни адреса сетей.
  9. Используй целые числа для побитовых операций, а не строки.
  10. Всегда проверяй граничные случаи: 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) – это часть адреса узла.

Как получить адрес сети?

ЕГЭ - 2026 - изображение номер пять
ЕГЭ — 2026 — изображение номер пять

Чтобы вычислить адрес сети, нужно выполнить поразрядную конъюнкцию (побитовое И) между IP-адресом и маской сети. Поразрядная конъюнкция – это операция, которая сравнивает биты по одному:

  • 1 и 1 → 1
  • 1 и 0 → 0
  • 0 и 1 → 0
  • 0 и 0 → 0
ЧИТАТЬ ТАКЖЕ:  Рандомный выбор из списка в Python: как сделать с помощью функции choice и других методов

Как определить количество адресов в сети?

13 задание - изображение номер шесть
13 задание — изображение номер шесть

Количество адресов в сети зависит от количества нулей в маске сети. Например, если в маске, например, 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.

Когда цикл закончит перебор всех адресов, программа выведет, сколько адресов подошли под условие задачи.

Определение маски

Практикум № 9 - изображение номер восемь
Практикум № 9 — изображение номер восемь

В сетях 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‑адреса и байт из адреса сети. По ним мы можем легко восстановить маску сети. Делать это будем пошагово и максимально просто:

  1. Переведём нужные байты в «машинный язык» – двоичную систему (нули и единицы).
  2. Посмотрим, как работает операция побитового «И» (AND): только когда обе цифры равны 1, результат будет 1. Во всех других случаях – 0.
  3. Определим, какие биты в маске дают нужный результат.
  4. Переведём полученную маску обратно в привычный десятичный вид.

Шаг 1. Записываем уравнение для байтов.
Для каждого байта справедливо такое правило:

  • IP3 – третий байт IP‑адреса (в нашем случае это 205);
  • N3 – третий байт адреса сети (у нас это 192);
  • M3 – третий байт маски, который нужно найти.

Шаг 2. Переводим числа в двоичный вид.
Теперь запишем наши числа в виде нулей и единиц – так, как с ними работает компьютер:

  • 20510 = 110011012
  • 19210 = 110000002

Шаг 3. Разбираем побитовую операцию и находим маску.
Давайте посмотрим, как работает операция «И» по битам:

Первые два бита слева равны 1 и в IP‑адресе, и в результате – значит, и в маске они тоже 1. Все оставшиеся биты в результате равны 0, значит, в маске на этих позициях стоят нули. В итоге маска получается такой: 110000002.

ЧИТАТЬ ТАКЖЕ:  Полное руководство: как удалить Python с компьютера на Windows 10

Шаг 4. Переводим маску в десятичное число.
Теперь осталось перевести нашу маску из двоичной записи обратно в привычный десятичный вид: 110000002 = 128 + 64 = 19210.

Нахождение адреса сети или broadcast-адреса

Информатика - изображение номер девять
Информатика — изображение номер девять

В сетях адрес сети определяют с помощью IP-⁠адреса устройства и маски сети. Нужно просто применить поразрядное «И» к каждому байту.

  • IP-адрес: 150.25.199.18
  • Маска: 255.255.224.0

В таблице найдите числа из адреса сети и запишите ответ, указав соответствующие буквы.

ЕГЭ по информатике: 2026 и далее - изображение номер десять
ЕГЭ по информатике: 2026 и далее — изображение номер десять

Теперь давайте решим задачу с помощью 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 упрощает работу, но на экзамене её может не быть, поэтому лучше освоить ручной метод.