Задание 13. Информатика. ЕГЭ. Статград. 28.01.2025-1

Просмотры: 1149
Изменено: 2 февраля 2025

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

Например, если IP-адрес узла равен \(231.32.255.131,\) а маска равна \(255.255.240.0,\) то адрес сети равен \(231.32.240.0.\)

Известно, что в двоичной записи адреса сети, к которой принадлежит узел \(68.30.20.77,\) содержится столько же единиц, сколько нулей в двоичной записи маски этой сети. Сколько адресов, в двоичной записи которых ровно 10 единиц, содержится в этой сети?

Решение:

Определим, сколько нулей содержится в маске сети (или сколько единиц содержится в двоичной записи адреса самой сети).

Python


ip = (68 << 24) + (30 << 16) + (20 << 8) + 77
for n in range(1, 32):
    mask = int('1' * (32 - n) + '0' * n, 2)
    net = ip & mask
    if bin(net)[2:].count('1') == n:
        print(n)

Получаем число \(8\). Это значит, что IP-адрес сети равен \(68.30.20.0\), в двоичной записи его содержатся \(8\) единиц, а для номера узла в сети выделен последний (младший) байт. Оставшиеся две единицы будут находиться в этом младшем байте. Всего вариантов их размещения \(C_8^2 = 28.\)

Ответ: \(28\)