Задание 1. а) представим -17₁₀ в обратном коде на 8-битном регистре - запишем число 17₁₀ в двоичной системе: 10001₂ - дополним его слева нулями до 8 знаков: 00010001 - поскольку число отрицательное, инвертируем каждый разряд, т.е. заменяем 0 на 1, а 1 на 0: 11101110 б) представим 22 в обратном коде на 8-битном регистре - запишем число 22₁₀ в двоичной системе: 10110₂ - дополним его слева нулями до 8 знаков: 00010110 - поскольку число положительное, его не нужно менять. в) выполняем сложение Возник перенос в девятый разряд, которого у нас нет (т.е. фактически произошло переполнение регистра). В этом случае перенос нужно осуществить в младший разряд, т.е. сложить результат с единицей и окончательно получим 00000101
Задание 2. а) представим -17₁₀ в дополнительном коде на 8-битном регистре - запишем число 17₁₀ в двоичной системе: 10001₂ - дополним его слева нулями до 8 знаков: 00010001 - поскольку число отрицательное, инвертируем каждый разряд, т.е. заменяем 0 на 1, а 1 на 0: 11101110 - прибавляем единицу в младший разряд: 11101111 б) представим 22 в дополнительном коде на 8-битном регистре - запишем число 22₁₀ в двоичной системе: 10110₂ - дополним его слева нулями до 8 знаков: 00010110 - поскольку число положительное, его не нужно менять. в) выполняем сложение Возник перенос в девятый разряд, которого у нас нет (т.е. фактически произошло переполнение регистра). При суммировании в дополнительном коде переполнение игнорируется, поэтому результат не меняется.
program z1;
var t: integer;
begin
write('С начала суток секунд t = ');
readln(t);
writeln('Это составляет ',t div 3600,' часов ', t mod 3600 div 60,' минут ',t mod 3600 mod 60,' секунд')
end.
Объяснение:
div - целочисленное деление
mod - остаток от целочисленного деления
1 мин = 60 сек
1 час = 60 мин = 3600 сек
t div 3600 - сколько целых часов
t mod 3600 - сколько секунд осталось не считая целых часов
t mod 3600 div 60 - сколько целых минут
t mod 3600 mod 60 - сколько секунд осталось не считая целых часов и целых минут