Задание №13 — Маски подсети
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом 220.187.16.0 и маской сети 255.255.240.0.
Сколько в этой сети IP-адресов, в двоичной записи которых содержатся три подряд идущие единицы?
В ответе укажите только число.
Правильный ответ
4096
Пояснение
Решение:
В маске 255.255.240.0 ровно единиц, поэтому свободны 12 младших битов и в сети адресов. Первые 20 битов у всех узлов одинаковы и равны 11011100 10111011 0001.
Достаточно взглянуть на первый октет: — три подряд идущие единицы там уже есть. Эта часть адреса не меняется, значит условию удовлетворяет каждый адрес сети, сколько бы единиц ни стояло в свободных разрядах. Подходят все 4096 адресов.
net = 220 * 256**3 + 187 * 256**2 + 16 * 256
host = 32 - 20
print(sum(1 for k in range(2 ** host)
if '111' in bin(net + k)[2:].zfill(32))) # 4096
Ответ: 4096