Переменные типа shortint хранят данные в дополнительном коде. Разрядность - 8 бит, диапазон представления данных -128₁₀ - 127₁₀, самый левый бит - знаковый. Переменные типа byte хранят данные в прямом коде. Разрядность 8 бит, диапазон представления данных 0 - 255₁₀, знаковый бит отсутствует.
Число 29₁₀ = 00011101₂ и в таком виде оно помещается в shortint. Число -49₂ = -00110001₂ и оно помещается в shortint в дополнительном коде как 11001111₂ Операция or в языке Pascal осуществляется поразрядно. 00011101 ∨ 11001111
11011111 Эта последовательность бит, если её рассматривать как shortint, соответствует числу -33 в дополнительном коде. Но если её переписать в восьмибитное поле, рассматриваемое как беззнаковое целое (т.е. тип byte), ее значение будет равно 223₁₀
Сначала задача должна быть решена геометрически. Очевидно, что круг войдет в прямоугольник если его диаметр D будет меньше, чем меньшая из сторон этого прямоугольника min(a,b). Вот и все решение.
По этому решению составляем алгоритм: 1. Ввести a, b, D 2. Найти m - минимум (a,b) 3. Если D<m, то вывести сообщение "Войдет", иначе вывести сообщение "Не войдет". 4. Завершить работу.
Осталось написать программу.
1. Современное решение
// PascalABC.NET 3.3, сборка 1611 от 06.01.2018 // Внимание! Если программа не работает, обновите версию!
begin var (a,b,d):=ReadReal3('Введите через пробел a,b,D:'); var m:=Min(a,b); if D<m then Writeln('Войдет') else Writeln('Не войдет') end.
Пример Введите через пробел a,b,D: 14.5 11 10.6 Войдет
2. "Школьный" вариант - так писали наши отцы и деды
var a,b,D,m:real;
begin Write('Введите через пробел a,b,D: '); Read(a,b,d); if a<b then m:=a else m:=b; if D<m then Writeln('Войдет') else Writeln('Не войдет') end.
10010*1001=10100010
15=1111, 11=1011
1111*1011=10100101
37=100101, 2=10
100101*10=1001010