В двоичной системе счисления ip адрес представляется в виде четырех чисел по 8 бит:
11011110 11000011 10100010 00110010
Переведем каждое число в десятичную систему счисления:
11011110₁₀ = 1*2⁷+1*2⁶+0*2⁵+1*2⁴+1*2₃+1*2²+1*2¹+0*2⁰= 128+64+0+16+8+4+2+0 = 222₂
11000011₁₀ = 1*2⁷+1*2⁶+0*2⁵+0*2⁴+0*2³+0*2²+1*2¹+1*2⁰ = 128+64+0+0+0+0+2+1 = 195₂
10100010₁₀ = 1*2⁷+0*2⁶+1*2⁵+0*2⁴+0*2³+0*2²+1*2¹+0*2⁰ = 128+0+32+0+0+0+2+0 = 162₂
00110010₁₀ = 0*2⁷+0*2⁶+1*2⁵+1*2⁴+0*2³+0*2²+1*2¹+0*2⁰ = 0+0+32+16+0+0+2+0 = 50₂
Получим результат: 222.195.162.50
program Find33;
uses SysUtils;
const
L = 100; // количество чисел, можно изменить на любое значение
var
i, j, c, cnt: Integer;
A: array [1..L] of Integer; // массив для сохранения чисел
s: string;
begin
WriteLn ('Массив трехзначных чисел: '); // вывод на экран сообщения
Randomize; // инициализация датчика случайных чисел
for i := 1 to L do begin
A [i] := 100 + Random (900); // заполняем массив случайными трехзначными числами
Write (A [i], ' '); // выводим их все на дисплей
end;
cnt := 0; // счетчик чисел с двумя тройками
WriteLn ('Найдены числа:');
for i := 1 to L do begin // цикл перебора всех элементов массива
s := IntToStr (A [i]); // трехзначное число преобразуем с символьную строку
c := 0; // счетчик троек в числе
for j := 1 to Length (s) do begin // цикл перебора всех символов строки
if s [j] = '3' then begin // если тройка, то инкремент счетчика троек
c := c + 1;
end;
end;
if c >= 2 then begin // если в числе хотя бы две тройки, то вывод числа и инкремент счетчика чисел
cnt := cnt + 1;
WriteLn (A [i]);
end;
end;
WriteLn ('Количество чисел, у которых хотя бы две тройки = ', cnt); // вывод результата
ReadLn; // ждать нажатия Enter
end.
Объяснение: комментарии в программе
10111101,1010₂ = 1011 1101,1010₂ = BD,A₁₆
б) 1011110,011₂ = 1 011 110,011₂ = 136,3₈
1011110,011₂ = 0101 1110,0110₂ = 5E,6₁₆