🎯 До ЕГЭ по информатике:
--дней
:
--часов
:
--минут
:
--секунд
13

IP-адреса и маски

Адрес сети = IP & Маска. Библиотека ipaddress. 5 типов задач.

Python
from ipaddress import *
# Создание сети
net = ip_network('1.2.3.4/255.255.255.192', 0)
net = ip_network('1.2.3.4/26', 0)  # или с префиксом
print(net)                # сеть / кол-во единиц
print(net[0])             # адрес сети
print(net[-1])            # широковещательный
print(net.netmask)        # маска
print(net.num_addresses)  # всего адресов
print(net.num_addresses - 2)  # узлов
# Все IP сети:
for ip in net:
    b = f'{int(ip):032b}'  # в двоичном
Способ 2
from ipaddress import *
# Тип 1: Определить адрес сети
net = ip_network('IP/Маска', 0)
print(net)

# Тип 2: Макс кол-во нулей в маске
maxi = 0
for mask in range(32 + 1):
    net = ip_network(f'IP/{mask}', 0)
    if str(net) == f'Адрес_сети/{mask}':
        maxi = max(maxi, mask)
print(maxi)

# Тип 3: Кол-во IP с условием
net = ip_network('IP/Маска', 0)
cnt = 0
for ip in net:
    b = f'{ip:b}'
    # if условие: cnt += 1

# Тип 5: Два узла в одной сети
for mask in range(32 + 1):
    net1 = ip_network(f'IP1/{mask}', 0)
    net2 = ip_network(f'IP2/{mask}', 0)
    if net1 == net2:
        print(net1.netmask)

📚 Теория

IP-адреса и маски подсетей. Адресация в IPv4.