Для перевода чисел в дополнительный код, нужно: 1) перевести в двоичную систему счисления 0000 1101 13 0000 0111 7 2) инвертировать (заменить 0 на 1 и наоборот) 1111 0010 1111 1000 3) и прибавить 1 1111 0011 1111 1001 все) числа в дополнительном коде мы получили
теперь сложение: 1111 0011 1111 1001 + 1 1110 1100 мы получили переполнение и единицу в старшем разряде, это значит, сумма будет со знаком минус теперь переведем сумму в обычный код, не трогаем старший бит 1) _001 0011 инвертируем биты 2) _001 0100 прибавим 1 3) переводим в десятичную систему счисления: 20
вспоминаем, что сумма отрицательная, поэтому ответ будет: -20 ------------ для положительных чисел нужно перевести в двоичную систему Например: 2 + 3 0000 0010 - 2 0000 0011 - 3 и сложить 0000 0101 - = 2 + 4 = 6 у положительных дополнительный код совпадает с прямым кодом
program znanijacom;
const
n = 5;
type
mas = array[1..n] of integer;
var
a: mas;
i: integer;
max: integer;
begin
writeln('введите элементы массива');
for i:=1 to n do readln(a[i]);
writeln('вывод элементов массива:');
for i:=1 to n do write(a[i]:3);
max := a[1];
for i:=1 to n do if a[i] > max then max := a[i];
writeln(' максимальный элемент: ', max);
writeln('массив после изменений: ');
for i:=1 to n do begin
if a[i] = max then a[i] := a[i]*i;
write(a[i]:3);
end;
end.
Объяснение: