1.
program z1;
var a:integer;
begin
write ('Введите четырехзначное число ');
readln (a);
writeln ('Сумма 1 и 3 цифр равна ', a div 1000 + a mod 100 div 10);
writeln ('Произведение крайних цифр равно ', a div 1000 * (a mod 100 mod 10));
end.
2.
program z2;
var x,k:integer;
begin
write ('Введите сколько мороженого купили Петров и Васечкин ');
readln (x);
write ('Введите сколько процентов мороженого съел Васечкин ');
readln (k);
writeln ('Васечкин съел ', x*k/100,' мороженого');
writeln ('Петров съел ', x*k/100/2,' мороженого');
writeln ('Учительница забрала ', x-x*k/100-x*k/100/2,' мороженого')
end.
1. Переводим число в двоичную систему
168.625₁₀ = 10101000.101₂
2. Сдвигаем точку влево так, чтобы она отделяла в целой части только одну цифру и фиксируем величину сдвига, как двоичный порядок
10101000.101₂ = 1.0101000101₂×2⁷
3. Отбрасываем целую часть, получая мантиссу 0101000101₂
4. Прибавляем к порядку 127
7+127 = 134₁₀ = 10000110₂
5. Приписываем к порядку его знак - 0 (сдвиг был влево), получая
010000110₂
6. Приписываем справа мантиссу и дополняем её нулями справа до 32 разрядов
01000011001010001010000000000000₂ = 01000011 00101000 10100000 00000000₂
7. Переводим результат в шестнадцатиричную систему счисления, заменяя каждые 4 двоичных цифры соответствующей шестнадцатиричной
01000011 00101000 10100000 00000000₂ = 43 28 A0 00₁₆