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

Просмотры: 210
Изменено: 24 ноября 2024

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

Решение:

Т.к. \(140_{10} = 10001100_2\) и \(19 _{10} = 00010011_2\), то количество единиц в каждом байте IP-адреса, согласно условию задачи, должно равняться \(3\). Учитывая, что \(248_{10} = 11111000_2\), получаем, что для адреса компьютера в сети используются младшие \(11\) битов.

Python


net = (140 << 24) + (19 << 16) + (96 << 8)
q = 0
for x in range(2**11):
    ip = net + x
    b4 = ip & 255
    b3 = (ip >> 8) & 255
    if bin(b4)[2:].count('1') == bin(b3)[2:].count('1') == 3:
        q += 1
print(q)

Ответ: \(168\)