Задание №13 — Маски подсети
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 140.250.64.0 и маской сети 255.255.224.0.
Определите максимальное количество нулей в двоичной записи IP-адреса в этой сети.
В ответе укажите только число.
Правильный ответ
22
Пояснение
Решение:
Маска 255.255.224.0 — это 11111111.11111111.11100000.00000000, в ней 19 единиц и 13 нулей. Значит, первые 19 битов адреса закреплены за сетью и берутся из 140.250.64.0, а остальные 13 битов свободны.
Максимум нулей будет, если все свободные биты обнулить, то есть на самом адресе сети. Нули фиксированной части: 140 = 10001100 — 5 нулей, 250 = 11111010 — 2 нуля, а от третьего байта 64 = 01000000 берутся только первые 3 бита 010 — ещё 2 нуля. Итого в фиксированной части 9 нулей, и вместе со всеми свободными битами получаем .
def ip(a, b, c, d):
return ((a * 256 + b) * 256 + c) * 256 + d
base = ip(140, 250, 64, 0)
print(max(format(base + i, '032b').count('0') for i in range(2 ** 13))) # 22
Ответ: 22