Вопрос по информатике:
29 or -49
высчитать
pascal
По возможности объяснить, как высчитать это с помощью калькулятора, ибо паскаль выдает 223, а калькулятор -33.
- 21.12.2015 17:19
- Информатика
- remove_red_eye 546
- thumb_up 21
Ответы и объяснения 2
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
- 22.12.2015 10:21
- thumb_up 21
Переменные типа byte хранят данные в прямом коде. Разрядность 8 бит, диапазон представления данных 0 - 255₁₀, знаковый бит отсутствует.
Число 29₁₀ = 00011101₂ и в таком виде оно помещается в shortint.
Число -49₂ = -00110001₂ и оно помещается в shortint в дополнительном коде как 11001111₂
Операция or в языке Pascal осуществляется поразрядно.
00011101
∨ 11001111
---------------
11011111
Эта последовательность бит, если её рассматривать как shortint, соответствует числу -33 в дополнительном коде.
Но если её переписать в восьмибитное поле, рассматриваемое как беззнаковое целое (т.е. тип byte), ее значение будет равно 223₁₀
- 23.12.2015 12:10
- thumb_up 31
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.