Задание №13 — Маски подсети
В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IР-адреса узла сети относится к адресу сети, а какая - к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Сеть задана IР-адресом 142.108.56.118 и маской сети 255.255.255.240. Сколько в этой сети IР-адресов, для которых в двоичной записи IР-адреса суммарное количество единиц в левых двух байтах меньше суммарного количества единиц в правых двух байтах? В ответе укажите только число.
Правильный ответ
5
Пояснение
Решение:
Маска 255.255.255.240 оставляет свободными только 4 младших бита последнего байта, все остальные разряды у адресов сети одинаковы.
Левые два байта: — 4 единицы, — 4 единицы, значит .
Правые два байта: третий байт даёт 3 единицы; четвёртый байт равен плюс любые 4 младших бита, то есть даёт единиц, где — число единиц среди свободных битов. Итого .
Условие даёт , то есть . Количество четырёхбитовых наборов с тремя или четырьмя единицами равно .
ones = lambda x: bin(x).count('1')
count = 0
for b4 in range(112, 128):
if ones(142) + ones(108) < ones(56) + ones(b4):
count += 1
print(count) # 5
Ответ: 5