Задание №13 — Маски подсети
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 162.1.24.0 и маской сети 255.255.248.0.
Определите максимальную сумму единиц в двоичной записи IP-адреса в этой сети.
В ответе укажите только число.
Правильный ответ
17
Пояснение
Решение:
Маска 255.255.248.0 содержит единицу, поэтому первые 21 бит адреса фиксированы сетью, а последние 11 битов можно выбирать произвольно. Двоичная запись адреса сети: 10100010 00000001 00011000 00000000, её фиксированная часть — 101000100000000100011, и в ней стоит 6 единиц.
Единицы в фиксированной части изменить нельзя, поэтому сумма единиц будет наибольшей, когда все 11 свободных битов равны единице. Получаем .
net = 162 * 256**3 + 1 * 256**2 + 24 * 256
host = 32 - 21
print(max(bin(net + k)[2:].zfill(32).count('1')
for k in range(2 ** host))) # 17
Ответ: 17