Что такое IP-адрес:
Это уникальный номер, который присваивается каждому устройству, подключенному к интернету или локальной сети.
В задании № 13 рассматривают версию IPv4.
Общий вид IP-адреса версии IPv4: четыре десятичных числа, каждое число имеет значения в диапазоне от 0 до 255, разделенные точками.
Примеры:
255.255.255.255
1.0.0.0
127.0.0.1
192.168.0.1
и так далее
Сразу можно вычислить максимальное количество IP-адресов, которые возможно сгенерировать.
| от 0 до 255 | от 0 до 255 | от 0 до 255 | от 0 до 255 |
| 256 чисел | 256 чисел | 256 чисел | 256 чисел |
256 ∗ 256 ∗ 256 ∗ 256 =

Теперь по двоичному представлению IP-адреса.
Просто переводится десятичное значение части IP-адреса в двоичную систему.
Примеры:
255.255.255.255 - 11111111.11111111.11111111.11111111
127.0.0.1 - 1111111.0.0.1
192.168.0.1 - вот тут проблема возникает... Долго и нужно вручную)
Python поможет.

не забываем, что 0b - это обозначение двоичной системы
само число идет после буквы b
192.168.0.1 - 11000000.10101000.0.1
Помните, что не все числа при переводе в двоичную систему имеют длину 8 символов.
Нужно самим дописывать ничего не значащие цифры 0 слева
Пример:
127.127.50.90 -

127.127.50.90 - 1111111.1111111.110010.1011010
как видно в примере, что второе, третье и четвертое числа имеют длину 7 или 6 символов.
необходимо научиться сразу дозаполнять до 8 символов нулями слева (не забывать)
127.127.50.90 - 1111111.01111111.00110010.01011010
это будет важно при решении задач, где требуется найти определенное количество единиц или нулей и так далее (иные задания по комбинаторике).
Маска сети:
32-битное число, которое используется для разделения IP-адреса на сетевую часть и часть для адресации хостов (устройств).
32-битное - это 32 цифры (1 или 0)
ВАЖНО!!
Маска имеет всегда вид:
11.......111000..000
То есть сначала единицы - потом нули.
Это просто нужно запомнить.
Маску нужно представлять в виде IP-адреса. Разделение на составные части также по 8 цифр.
Это приводит к определенному формату маски.
Примеры маски:
11111111111111110000000000000000 - шестнадцать единиц и шестнадцать нулей
вручную разбиваем
11111111.11111111.00000000.00000000
переводим в десятичную систему
255.255.0.0
11111111.11111111.11100000.00000000 - 255.255.224.0
выявляем закономерность:
маска может быть только
0, 128, 192, 224, 240, 248, 252, 254, 255
К самому важному:
Маска имеет основное значение для 13 задания.
Когда мы сопоставим адрес сети и маску (друг под другом), цифры под нулями маски могут быть изменяемыми (либо 0, либо 1). Под единицами цифры не изменяемые.
То есть под нулями часть IP-адреса будет изменяемой. Из этой части как раз формируются IP-адреса устройств.
Иногда в задаче пишут про широковещательный адрес, значит его тоже нужно учитывать.
Пример:
127.127.50.90 - адрес сети
255.255.224.0 - маска сети
11111111.11111111.11100000.00000000 - маска сети
01111111.01111111.00110010.01011010 - адрес сети
под нулями маски все может изменяться
то есть адресов может быть 213 - 8192 (13 нулей в маске)
Далее простые задачи и их быстрое решение: