В терминологии сетей TCP/IP маска сети — это двоичное число,
Для узла с IP-адресом 224.128.112.142 адрес сети равен 224.128.64.0. Чему равен третий слева байт маски? Ответ запишите в виде десятичного числа.
Рассмотрим третий слева байт в IP-адресе узла и адресе сети, представим их в двоичном виде:
11210 = 0111 00002; 6410 = 0100 00002.
Маской сети является такое двоичное число, которое при поразрядной конъюнкции с IP-адресом узла даст адрес сети, при этом первая часть числа состоит из единиц, а всё остальное — нули. Таким числом является 1100 00002 = 19210.
Ответ: 192.
Приведём решение Владимира Артамонова на языке Python.
from ipaddress import ip_network, IPv4Address
def normalize(n): # Функция для получения из двоичного числа маску
return str(IPv4Address(int(n.ljust(32, "0"), 2)))
for mask in range(32): # Перебираем маски, если подходит, то выводим третий слева байт
net = ip_network(f"224.128.112.142/{mask}", strict=False)
if str(net.network_address) == "224.128.64.0":
mask = normalize("1" * mask)
print(mask.split(".")[2])
Приведём решение Юрия Красильникова на языке Python.
mask = [int('1'*i+'0'*(8-i),2) for i in range(9)]
print(*[m for m in mask if 112&m==64])

