Program n1;
Uses CRT;
Const n=15;
Var A: array[1..n] of integer; B: array[1..n] of integer;
i,k,max: integer;
begin
randomize;
clrscr;
Writeln('ishodny massiv');
For i:=1 to n do
begin
a[i]:=random(100);
a[i]:=a[i]-50;
write(a[i]:4);
end;
writeln;
writeln('polychenny massiv');
max:=0;
For i:=1 to n do
begin
b[i]:=-a[i];
write(b[i]:4);
If a[i]=b[i] then k:=k+1;
If (b[i]>0)and(b[i]>max) then max:=b[i];
If (b[i]<0)and(-b[i]>max) then max:=-b[i];
end;
writeln;
Writeln('Kolychestvo neizmenyvshihsa elementov=',k,', samyi bolshoy po modyly element raven =',max);
writeln
end.
Представим 145 в двоичном виде: 10010001
Маска в IPv4 - последовательность из 32-х 1 и 0 такая, что сначала идет n единиц, затем 32-n нулей. Число единиц равно наибольшему количеству совпавших бит у адресов слева направо. Видим, что первые два блока полностью совпадают, так как их десятичные записи совпадают. Различия уже начинаются в третьем блоке. В разложении чисел видно, что совпадают лишь первые 4 бита, дальше уже идет первое несовпадение. поэтому маска для этих адресов выглядит так: 11111111.11111111.11110000.00000000
Переводим 11110000 в десятичный вид и получаем 240.