В терминологии сетей TCP/IP маской сети называется двоичное число, определяющее, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу самого узла в этой сети. Обычно маска записывается по тем же правилам, что и IP-адрес, — в виде четырёх байтов, причём каждый байт записывается в виде десятичного числа. При этом в маске сначала (в старших разрядах) стоят единицы, а затем с некоторого разряда — нули. Адрес сети получается в результате применения поразрядной конъюнкции к заданному IP-адресу узла и маске.
Например, если IP-адрес узла равен 237.33.255.123, а маска равна 255.255.240.0, то адрес сети равен 237.33.240.0.
Для узла с IP-адресом 119.167.50.77 адрес сети равен 119.167.48.0. Чему равно наименьшее возможное значение третьего слева байта маски? Ответ запишите в виде десятичного числа.
У нас получилось уравнение 50 ∧ x = 48. При этом в двоичной
Ответ: 240.
Приведём решение Ларисы Нефёдовой на языке Python.
from ipaddress import *
ip = ip_address('119.167.50.77')
net = ip_address('119.167.48.0')
for mask in range(33):
network = ip_network(f'{ip}/{mask}', 0)
if net == network.network_address:
mask = network.netmask
byte3 = str(mask).split('.')[2]
print(byte3) # выбираем минимальное из полученного списка
Приведём решение Юрия Красильникова на языке Python.
mask = [int('1'*i+'0'*(8-i),2) for i in range(9)]
print(min([m for m in mask if 50&m==48]))

