Информатика Архивный вопрос

29 or -49
высчитать
pascal
По возможности объяснить, как высчитать это с помощью калькулятора, ибо паскаль выдает 223, а калькулятор -33.

10 комментария:
Будет произведено вычисление с операндами типа integer, а результат обрезан до byte.
Вы знаете, почему 4294967247 и -49 это одно и то же?
согласен, с shortint всё работает верно, но я в замешательстве, ибо не понимаю что ставить в контр. значение. -33 или то, что высчиталось паскалем 223...
Если 4294967247 обрезать до byte, получится 207
А как 207 or 29 = 223 надеюсь объяснять не надо?
Возможно надо все делать в шортинт, и в конце преобразавать число в байт
Эникей сейчас решит и посмотрим
Напиши задание полностью.
секунду
задание писал выше

Ответы

Гость

Все зависит от типа переменных!

var a: smallint;
var b: integer;
var c: cardinal;
var d: byte;

begin
        a := 29 or -49;
        b := 29 or -49;
        c := 29 or -49;
        d := 29 or -49;

        writeln('smallint: ', a);
        writeln('integer: ', b);
        writeln('cardinal: ', c);
        writeln('byte: ', d);
end.

smallint: -33
integer: -33
cardinal: 4294967263
byte: 223


4 комментария:
да при чем тут разрядности... Дело в том, что мне нужно просто понять, как именно паскаль высчитал, что 29 OR -49 будет 223, а калькулятор выдал -33
4294967263 and 255 и будет как раз 223
Если тип переменной - беззнаковое целое разрядностью 8 бит (byte).
Вот при чем тут разрядности.

Похожие вопросы