В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и его маске. Широковещательным адресом называется специализированный адрес, в котором на месте нулей в маске стоят единицы. Адрес сети и широковещательный адрес не могут быть использованы для адресации сетевых устройств.
Сеть задана IP-адресом одного из входящих в неё узлов \(220.151.212.184\) и сетевой маской \(255.255.192.0.\)
Найдите наименьший в данной сети IP-адрес, содержащий в своей двоичной записи кратное \(4\) количество единиц, который может быть назначен компьютеру. В ответе укажите найденный IP-адрес без разделителей.
Например, если бы найденный адрес был равен \(111.22.3.44,\) то в ответе следовало бы записать \(11122344.\)
Решение:
Python
ip = (220 << 24) + (151 << 16) + (212 << 8) + 184
mask = (255 << 24) + (255 << 16) + (192 << 8)
net = ip & mask
p = f'{mask:b}'.count('0')
for x in range(1, 2**p - 1):
ip = net + x
if f'{ip:b}'.count('1') % 4 == 0:
print(f'{(ip >> 24) & 255}{(ip >> 16) & 255}{(ip >> 8) & 255}{ip & 255}')
break
Ответ: \(22015119215\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене