Задание 13. Информатика. ЕГЭ. Поляков-7007

Просмотры: 332
Изменено: 25 ноября 2024

(А. Минак) В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети. Сеть задана IP-адресом \(117.32.0.0\) и маской сети \(255.224.0.0\). Сколько в этой сети IP-адресов, которые имеют ровно два одинаковых по значению байта? IP-адрес сети и широковещательный адрес учитывать не следует.

Решение:

Маска сети \(255.224.0.0 = 11111111.11100000.00000000.00000000_2\). Для номера хоста в сети выделяется \(21\) младший бит.

Python


net = (117 << 24) + (32 << 16)
q = 0
for x in range(2**21):
    ip = net + x
    t = set()
    t.add(ip & 255)
    t.add((ip >> 8) & 255)
    t.add((ip >> 16) & 255)
    t.add((ip >> 24) & 255)
    q += int(len(t) == 3)
print(q - 2)

Ответ: \(40638\)