84) Чтобы определить наибольшее количество единиц в разрядах маски надо рассчитать ее адрес в двоичной системе счисления. Это можно сделать с поразрядной конъюнкции (в результате побитного логического умножения адреса маски на ip адрес получим адрес сети)
Известен IP адрес: 68.112.69.138 и адрес сети 68.112.64.0
Первые два байта адреса 68 и 112 совпадают, то есть, если применить поразрядную конъюнкцию, получим адрес маски состоящий из восьми единиц: 11111111 и 11111111.
Рассмотрим третий байт.
маска : ip адрес: 69 в двоичной: 01000101 сеть: 64 в двоичной: 01000000
Правилом для маски является то, что если в маске оказывается ноль, то после него могут идти только нули. До нуля соответственно единицы.
Для шестого слева разряда маски: ?&1=0, значит в маске может находится только ноль.По правилу все остальные справа от шестого биты будут тоже равны нулю Второй бит: ?&1=1 значит в маске только 1, перед ним первый бит по правилу= 1 Третий, четвертый и пятый бит ?&0=0 могут быть как 0 так и 1,но по условию задачи нам надо найти наибольшее возможное количество единиц, следовательно примем значение равным 1.
Получаем значение второго байта маски: 11111000 В итоге адрес маски в двоичной системе получится 11111111.11111111.11111000.00000000 получаем 21 единицу. ответ: 21
88) Решение аналогично предыдущей задачи: IP адрес: 63.132.140.28 адрес сети: 63.132.140.0
Первые три байта ip адреса и адреса сети совпадают, в результате поразрядной конъюнкции получим значение маски 11111111.11111111.11111111
Для четвертого байта: маска: 28 в двоичной системе: 00011100 0 в двоичной: 00000000
Четвертый бит у маски ?&1=0 принимает значение 0 Все последующие биты по правилу= 0 Первые три бита могут быть равны только 1
В итоге адрес маски : 11111111.11111111.11111111.11100000 В нем 27 единиц
ответ: 27 единиц
artemyanovich8
26.05.2023
Program first;
uses Crt;
const N=1000;
var A:array[0..N] of integer; I,K,Z,S,R,P:integer;
begin ClrScr; Randomize; Print('Введите количество элементов массива:'); Readln(R); Println('Значение элементов массива'); for I:=1 to R do begin A[I]:=Random(10)-3; Write(A[I]:3) end; Println();
{ начало блока вычисления S - суммы отрицательных элементов и K - количество положительных, меньших заданного Z (число "А") } Print('Введите число А:'); Read(Z); S:=0; K:=0; for I:=1 to R do begin if A[I] < 0 then S:=S+A[I]; if (A[I] > 0) and (A[I] < Z ) then K:=K+1 end; Writeln('Сумма отрицательных элементов ',S); Writeln('Количество положительных элементов, меньших заданного ',K); { конец блока }
{ начало блока нахождения номера последней пары соседних элементов с разными знаками } P:=1; for i := 1 to n-1 do if A[I]*A[I+1]<0 then P := i; if P>0 then Writeln('Номер последней пары соседних элементов с разными знаками: ', P) else Writeln('Массив не содержит элементов с разными знаками'); { конец блока }
end.
Пример Введите количество элементов массива: 12 Значение элементов массива 5 5 -1 -2 -1 3 0 -3 4 -1 6 5 Введите число А: 6 Сумма отрицательных элементов -8 Количество положительных элементов, меньших заданного 5 Номер последней пары соседних элементов с разными знаками: 10
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Фотосуркттің өлшемі 4000x1500 нүктеден тұрады.Әрбір нүкте сонша түстен тұрады.Оны кодтау үшін 2 байт қажет.Берілген фото сурет қанша орын алады?
Известен IP адрес: 68.112.69.138 и адрес сети 68.112.64.0
Первые два байта адреса 68 и 112 совпадают, то есть, если применить поразрядную конъюнкцию, получим адрес маски состоящий из восьми единиц: 11111111 и 11111111.
Рассмотрим третий байт.
маска :
ip адрес: 69 в двоичной: 01000101
сеть: 64 в двоичной: 01000000
Правилом для маски является то, что если в маске оказывается ноль, то после него могут идти только нули. До нуля соответственно единицы.
Для шестого слева разряда маски: ?&1=0, значит в маске может находится только ноль.По правилу все остальные справа от шестого биты будут тоже равны нулю
Второй бит: ?&1=1 значит в маске только 1, перед ним первый бит по правилу= 1
Третий, четвертый и пятый бит ?&0=0 могут быть как 0 так и 1,но по условию задачи нам надо найти наибольшее возможное количество единиц, следовательно примем значение равным 1.
Получаем значение второго байта маски: 11111000
В итоге адрес маски в двоичной системе получится 11111111.11111111.11111000.00000000
получаем 21 единицу.
ответ: 21
88) Решение аналогично предыдущей задачи:
IP адрес: 63.132.140.28 адрес сети: 63.132.140.0
Первые три байта ip адреса и адреса сети совпадают, в результате поразрядной конъюнкции получим значение маски 11111111.11111111.11111111
Для четвертого байта:
маска:
28 в двоичной системе: 00011100
0 в двоичной: 00000000
Четвертый бит у маски ?&1=0 принимает значение 0
Все последующие биты по правилу= 0
Первые три бита могут быть равны только 1
В итоге адрес маски : 11111111.11111111.11111111.11100000
В нем 27 единиц
ответ: 27 единиц