Задание №13 — Маски подсети
В терминологии сетей ТСР/IР маской сети называют двоичное число, которое показывает, какая часть IР-адреса узла сети относится к адресу сети, а какая к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Сеть задана IР-адресом 23.140.159.160 и маской сети 255.255.252.0. Сколько в этой сети IР-адресов, для которых в двоичной записи IP-адреса суммарное количество единиц в левых двух байтах не менее суммарного количества единиц в правых двух байтах? В ответе укажите только число.
Правильный ответ
176
Пояснение
Решение:
Маска 255.255.252.0 оставляет свободными 2 младших бита третьего байта и весь четвёртый байт.
Левые два байта: — 4 единицы, — 3 единицы, значит .
Правые два байта: третий байт равен (4 единицы) плюс два свободных бита, дающих единиц; четвёртый байт свободен целиком и даёт единиц. Итого .
Условие даёт , то есть . Перебираем :
- ( способ): , это варианта, всего 93;
- ( способа): , это , всего ;
- ( способ): , это , всего 9.
Сумма: .
ones = lambda x: bin(x).count('1')
count = 0
for b3 in range(156, 160):
for b4 in range(0, 256):
if ones(23) + ones(140) >= ones(b3) + ones(b4):
count += 1
print(count) # 176
Ответ: 176