Тайна shr

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

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

Тайна shr

Сообщение Osmiy » 05.08.2024 04:15:37

Вот программа:
Код: Выделить всё
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, то не происходит.
Osmiy
новенький
 
Сообщения: 40
Зарегистрирован: 07.05.2016 21:18:39

Re: Тайна shr

Сообщение Снег Север » 05.08.2024 07:37:20

RTFM
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3051
Зарегистрирован: 27.11.2007 16:14:47

Re: Тайна shr

Сообщение runewalsh » 05.08.2024 18:54:41

Сдвиг на значения ≥ разрядности переменной (32 для LongWord) не определён.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru