Самая длинная маска подсети - это самая длинная последовательность битов префикса, которые разделяют все адреса. Итак:
- преобразовать первый и последний IP-адреса в целые числа
- считать одинаковые биты, начиная с HSB - это длина маски
Адреса IPv4 на самом деле являются 32-разрядными целыми числами без знака - точечная запись предназначена только для нас, людей.
Шаг 2 может быть выполнен с помощью exclusive-или с обоими адресами, в результате чего все идентичные биты равны 0
. Затем сдвиг вправо, пока результат не станет нулевым. Длина маски 32- (количество смен).
В вашем примере:
3.0.0.0 = 00000011 00000000 00000000 00000000
3.1.255.255 = 00000011 00000001 11111111 11111111
XOR = 00000000 00000001 11111111 11111111
turns 0 after 17 right shifts => length is 15