В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого места — нули.
Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.
Узлы с IP-адресами 202.3.20.24 и 202.3.27.11 находятся в одной сети. Укажите наименьшее возможное количество принадлежащих этой сети IP-адресов, в двоичной записи которых чётное число единиц.
Рассмотрим какая часть IP-адреса узлов относиться к адресу сети. Первые два байта слева у узлов одинаковые, следовательно, они относятся к адресу сети.
Рассмотрим третий слева байт узлов IP-адресов в двоичной системе счисления:
2010 = 0001 01002,
2710 = 0001 10112.
Видим, что первые
Всего возможно
Наименьшее возможное количество принадлежащих этой сети IP-адресов, в двоичной записи которых чётное число единиц, — 2048.
Ответ: 2048.
Примечание.
В маске после нуля идут только одни нули.
Приведём решение Данила Шарлова на языке Python.
from ipaddress import ip_network, ip_address
ip = ip_address('202.3.20.24')
for mask in range(32,-1,-1):
net = ip_network(f'202.3.27.11/{mask}',0)
if ip in net:
print(net.num_addresses//2)
break

