Восьмибитовая ячейка - это байт. В байте стандартно можно представить числа в диапазоне от -128 до 127; при этом положительные числа представляются в прямом коде. а отрицательные - в модифицированном. Самый старший (левый, он же - седьмой) бит используется для знака (0 - плюс, 1 - минус), а остальные семь (с нумерацией справа налево от 0 до 6) - для хранения двоичного представления числа. Модифицированный код получается из прямого путем инвертирования бит (0 заменяется на 1, 1 заменяется на 0) - при этом получаем дополнительный код, - а затем прибавлеем к результату 1 в младшем (правом) разряде. а) 56(10)=111000(2) и отображается в байте как 0 0111000 (знаковый бит отделен условно) б) -56(10)=-111000(2), 1 0111000 в прямом коде, 1 1000111 в дополнительном коде, 1 1001000 в модифицированном коде. в) 127(10)=1111111(2) , 0 1111111 в байте г) -127(10)=-111111(2), 1 1111111 в прямом коде, 1 0000000 в дополнительном коде, 1 0000001 в модифицированном коде.
Var a:array[1..5] of integer; i,Max,c,n,f:integer; procedure ho; begin if a[i]>Max then begin Max:=a[i]; c:=i; end; end;
begin for i:=1 to 5 do begin a[i]:= random(15)+2; write(a[i],' '); end; Max:=a[1]; c:=1; for i:=1 to 5 do ho; writeln; writeln('Максимум: ',max); f:=c; if f=1 then begin max:=a[2]; for i:=2 to 5 do ho; writeln('Вторичный максимум: ',max); exit; end; if f<5 then begin Max:=a[f+1]; for i:=f+1 to 5 do ho; n:=max; end; if f>1 then begin Max:=a[1]; c:=f; for i:=1 to c-1 do ho; if max>n then writeln('Вторичный максимумì: ',max); if max<n then writeln('Вторичный максимум: ',n); end; end.
Модифицированный код получается из прямого путем инвертирования бит (0 заменяется на 1, 1 заменяется на 0) - при этом получаем дополнительный код, - а затем прибавлеем к результату 1 в младшем (правом) разряде.
а) 56(10)=111000(2) и отображается в байте как 0 0111000 (знаковый бит отделен условно)
б) -56(10)=-111000(2), 1 0111000 в прямом коде, 1 1000111 в дополнительном коде, 1 1001000 в модифицированном коде.
в) 127(10)=1111111(2) , 0 1111111 в байте
г) -127(10)=-111111(2), 1 1111111 в прямом коде, 1 0000000 в дополнительном коде, 1 0000001 в модифицированном коде.
a:array[1..5] of integer;
i,Max,c,n,f:integer;
procedure ho;
begin
if a[i]>Max then
begin
Max:=a[i];
c:=i;
end;
end;
begin
for i:=1 to 5 do
begin
a[i]:= random(15)+2;
write(a[i],' ');
end;
Max:=a[1];
c:=1;
for i:=1 to 5 do
ho;
writeln;
writeln('Максимум: ',max);
f:=c;
if f=1 then
begin
max:=a[2];
for i:=2 to 5 do
ho;
writeln('Вторичный максимум: ',max); exit;
end;
if f<5 then
begin
Max:=a[f+1];
for i:=f+1 to 5 do
ho;
n:=max;
end;
if f>1 then
begin
Max:=a[1];
c:=f;
for i:=1 to c-1 do
ho;
if max>n then
writeln('Вторичный максимумì: ',max);
if max<n then
writeln('Вторичный максимум: ',n);
end;
end.