Задание №13 — Маски подсети
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 157.245.80.0 и маской сети 255.255.252.0.
Определите минимальное количество нулей в двоичной записи IP-адреса в этой сети.
В ответе укажите только число.
Правильный ответ
9
Пояснение
Решение:
Маска 255.255.252.0 содержит единицы, поэтому старшие 22 бита адреса определены сетью, а младшие 10 битов свободны. Адрес сети в двоичном виде: 10011101 11110101 01010000 00000000, его фиксированная часть 1001110111110101010100 содержит 9 нулей.
От этих девяти нулей избавиться нельзя, а свободные 10 битов можно все сделать единицами — тогда в младшей части нулей не останется. Поэтому наименьшее возможное количество нулей равно 9.
net = 157 * 256**3 + 245 * 256**2 + 80 * 256
host = 32 - 22
print(min(bin(net + k)[2:].zfill(32).count('0')
for k in range(2 ** host))) # 9
Ответ: 9