Задача #3468
Компьютерные сети
(Р. Косов) В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске.
Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом одного из входящих в неё узлов 172.95.116.174 и сетевой маской 255.255.192.0.
Найдите наименьший в данной сети IP-адрес, в котором количество единиц в двоичной записи кратно 5. В ответе укажите сумму числовых значений октетов найденного IP-адреса.
Например, если бы найденный адрес был равен 100.10.3.4, то в ответе следовало бы записать 117
Решение
Ответ
from ipaddress import *
address = '172.95.116.174'
mask = '255.255.192.0'
net = ip_network(f'{address}/{mask}',0)
for ip in net:
dv = bin(int(ip))[2:].zfill(32)
if dv.count('1') % 5 == 0:
print(ip)
break
Далее находим сумму выведенных чисел.