сначало переводим это же число только со знаком плюс в двоичную систему счисления
7 = 0000000000000111 и дописываем впереди 13 нулей, т.к. нам нужен код в 16-разрядном представлении
теперь дописываем спереди бит отвечающий за знак
1,0000000000000111 пр.
теперь записываем обратный код, для этого нужно заменить все 0 на 1, а 1 на 0 за исключение бита отвечающего за знак
1,1111111111111000 обр.
теперь чтобы получить допонительный код нужно к обратному прибавить 1
1,1111111111111001 доп.
преобразование числа из прямого кода в дополнительный осуществляется так:
если число, записанное в прямом коде, положительное, то к нему дописывается старший (знаковый) разряд, равный 0, и на этом преобразование заканчивается; если число, записанное в прямом коде, отрицательное, то все разряды числа инвертируются, а к результату прибавляется 1. к получившемуся числу дописывается старший (знаковый) разряд, равный 1.
1) записываем наше число в прямом(обычном двоичном коде в 16-разрядном представлении)
-7 в десятичной = 0000000000000111 - нули у нас впереди так как сетка 16 -разрядная
2) инвертируем все разряды числа: 1111111111111000
3) прибавляем к этому числу 1: 1111111111111001
4) старший знаковый разряд у нас уже равен 1 следовательно число -7 в 10-ой в дополнительном коде: 1111110100111010
Поделитесь своими знаниями, ответьте на вопрос:
Массив из 100 ячеек заполнить числами 1 2 3 4 5 4 3 2 1 ( без использования ввода с клавиатуры) и вывести его на экран в строку
ответ:
объяснение:
const
n = 100;
var
a: array[1..n] of integer;
i, k, d: integer;
begin
k: =1;
d: =1;
for i: = 1 to n do begin
a[i]: =k;
if (i = 50) then begin
d: =-1;
k: =k+1;
end;
k: =k + d;
end;
for i: = 1 to n do
write(a[i], ' ');
readln;
end.