Задание №13 — Маски подсети
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 185.76.220.0 и маской сети 255.255.254.0.
Определите минимальную сумму единиц в двоичной записи IP-адреса в этой сети.
В ответе укажите только число.
Правильный ответ
13
Пояснение
Решение:
В маске 255.255.254.0 ровно 23 единицы и 9 нулей. Первые 23 бита адреса — это адрес сети, они у всех узлов одинаковы и совпадают с битами адреса 185.76.220.0; последние 9 битов свободны.
Единицы фиксированной части убрать нельзя, поэтому минимум получится, если все свободные биты сделать нулевыми. Считаем единицы фиксированной части: 185 = 10111001 даёт 5 единиц, 76 = 01001100 даёт 3 единицы, а от третьего байта 220 = 11011100 берутся только первые 7 битов 1101110 — ещё 5 единиц. Итого , и это значение достигается на самом адресе сети 185.76.220.0.
def ip(a, b, c, d):
return ((a * 256 + b) * 256 + c) * 256 + d
base = ip(185, 76, 220, 0)
print(min(format(base + i, '032b').count('1') for i in range(2 ** 9))) # 13
Ответ: 13