Задание №13 — Маски подсети
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 182.110.170.192 и маской сети 255.255.255.192.
Сколько в этой сети IP-адресов, в двоичной записи которых содержатся три подряд идущие единицы?
В ответе укажите только число.
Правильный ответ
64
Пояснение
Решение:
Маска 255.255.255.192 содержит единиц, поэтому свободны 6 младших битов и всего в сети адреса. Общая для всех узлов часть адреса — это первые 26 битов адреса 182.110.170.192, то есть 10110110 01101110 10101010 11.
Присмотримся ко второму октету: — в нём уже есть три подряд идущие единицы. Эта часть адреса одинакова у всех узлов сети, поэтому условие выполняется для каждого адреса независимо от значений шести свободных битов. Значит, подходят все 64 адреса.
net = 182 * 256**3 + 110 * 256**2 + 170 * 256 + 192
host = 32 - 26
print(sum(1 for k in range(2 ** host)
if '111' in bin(net + k)[2:].zfill(32))) # 64
Ответ: 64