В терминологии сетей TCP/IP маской сети называют двоичное число, которое показывает, какая часть IP-адреса узла сети относится к адресу сети, а какая — к адресу узла в этой сети. Адрес сети получается в результате применения поразрядной конъюнкции к заданному адресу узла и маске сети.
Для узла с IP-адресом 212.145.124.210 адрес сети равен 212.145.124.0.
Каково наименьшее возможное количество единиц в разрядах маски?
Приведём решение на языке Python.
from ipaddress import *
mini = 10**10
for mask in range(32+1):
net = ip_network(f'212.145.124.210/{mask}', 0)
if str(net) == f'212.145.124.0/{mask}':
mini = min(mini, mask)
print(mini)
Ответ: 22.
Приведём решение Сергея Донец на PascalABC.NET:
uses School;
begin
var ip := '212.145.124.210';
var net := '212.145.124.0';
for var mask := 1 to 31 do
begin
var calc := new CalcIP(ip, mask);
if calc.Network.value = net
then begin
Print(mask);
break;//22
end;
end;
end.

