Тайна shr

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Osmiy
новенький
Сообщения: 46
Зарегистрирован: 07.05.2016 20:18:39

Тайна shr

Сообщение Osmiy »

Вот программа:

Код: Выделить всё

program project1;

uses
  Math;

var
  I: LongWord;

begin
  I:= 1;
  I:= I shr 31;
  WriteLn(I);

  I:= 1;
  I:= I shr 32;
  WriteLn(I);

  ReadLn;
end.  
Она у меня выдаёт результат:
0
1
Т.е. shr с параметром до 32 работает с отсечением, с 32 и более циклически. Это так и должно?

Добавлено спустя 4 минуты 6 секунд:
Точнее цикличная работа происходит только при 32, 64 и т.д. Хрень господьня.

Добавлено спустя 10 минут 58 секунд:
Короче циклическая работа сдвига происходит по непонятным соображениям. ТО происходит, когда параметр больше 32, то не происходит.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

RTFM
Аватара пользователя
runewalsh
энтузиаст
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

Сообщение runewalsh »

Сдвиг на значения ≥ разрядности переменной (32 для LongWord) не определён.
Ответить