(Р. Косов) В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая – к адресу узла в этой сети. Сеть задана IP-адресом одного из входящих в неё узлов \(192.168.12.207\) и сетевой маской \(255.192.0.0.\) Найдите наибольший в данной сети IP-адрес, в котором одинаковое количество нулей и единиц в двоичной записи. В ответе укажите найденный IP-адрес без пробелов и разделителей. Например, если бы найденный адрес был равен \(100.10.3.4,\) то в ответе следовало бы записать \(1001034.\)
Решение:
Python
ip = (192 << 24) + (168 << 16) + (12 << 8) + 207
mask = (255 << 24) + (192 << 16)
net = ip & mask
p = f'{mask:b}'.count('0')
ans = net + 2**p - 2
while f'{ans:b}'.count('1') != 16:
ans -= 1
print(f'{(ans >> 24) & 255}{(ans >> 16) & 255}{(ans >> 8) & 255}{ans & 255}')
Ответ: \(1921912540\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене