Для узла с IP-адресом 203.155.196.98 адрес сети равен 203.155.192.0. Найдите наибольшее возможное количество единиц в двоичной записи маски подсети.
Заметим, что первый и второй байты IP-адреса и адреса сети равны. Следовательно, первый и второй байты маски IP-адреса состоят только из единиц.
Запишем третий байт IP-адреса и адреса сети в двоичной системе счисления:
19610 = 110001002,
19210 = 110000002.
Видим, что два первых слева бита маски — единицы, а биты с третьего по пятый могут быть как нулями, так и единицами. Для того чтобы значение было наибольшим, эти биты должен быть равны единице. Получаем, что третий слева байт маски равен 111110002 = 24810. В маске сети сначала идут единицы, а затем нули. Следовательно, четвёртый байт маски состоит из нулей.
Таким образом, наибольшее количество единиц в двоичной записи маски подсети: 8 + 8 + 5 = 21.
Ответ: 21.
Приведём решение Павла Ветрова на языке Python.
from ipaddress import *
for m in range(33):
net = ip_network(f'203.155.196.98/{m}',0)
if str(net.network_address) == '203.155.192.0':
print(m)

