В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. При этом в двоичном представлении маски сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда — нули. Обычно маска записывается по тем же правилам, что и IP-адрес, — в виде четырёх байт, причём каждый байт записывается в виде десятичного числа. Адрес сети получается в результате применения поразрядной конъюнкции к IP-адресу узла и маске.
Например, если IP-адрес узла равен 231.32.255.131, а маска равна 255.255.240.0, то адрес сети равен 231.32.240.0.
Для узла с IP-адресом 136.128.196.48 адрес сети равен 136.128.192.0. Чему равно наибольшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
Переведем третьи байты в двоичную систему:
19610 = 110001002,
19210 = 110000002.
Известно, что первые
Примечание. Ответ 251 является неверным, так как после нуля должны идти только нули.
Ответ: 248.
Приведём решение Ильи Андрианова на языке Python.
from ipaddress import *
maxi = 0
for mask in range(32+1):
net = ip_network(f'136.128.196.48/{mask}', 0)
if str(net) == f'136.128.192.0/{mask}':
maxi = max(maxi, int(str(net.netmask).split('.')[2]))
print(maxi)

