SHR - побитовый сдвиг вправо с сохранением знака
Бинарный оператор SHR сдвигает вправо биты целого числа по алгоритму:
-
В первом операнде in1 задается исходное значение для сдвига бит, а во втором операнде in2 - количество сдвигаемых бит в диапазоне [1 .. 31]. Если in2 < 0, сдвиг не осуществляется, возвращается исходное значение in1.
-
Биты исходного значения in1 сдвигаются вправо на количество in2.
-
Лишние биты, вышедшие справа за границы битовой маски, отбрасываются.
-
Старший бит исходного значения in1 не изменяется, чтобы сохранить знак.
-
Остальные освободившиеся слева биты заполняются значением старшего бита (при отрицательном значении in1 единицами, при положительном значении нулями).Оба операнда и возвращаемое значение должны иметь целочисленный 32-битный тип данных INTEGER. В качестве операнда могут передаваться константы, переменные или выражения с результатом в виде целого числа.Пример работы оператора продемонстрирован на следующем изображении:
Синтаксис на языке ST.Синтаксисout := SHR(in1, in2)Примерыin1 := -32432;in2 := 4;out1 := SHR(in1, in2); //out1 = -2027out2 := SHR(-in1, 2*2); //out2 = 2027out3 := SHR(SHR(64864, 1), 4); //out3 = 2027Синтаксис на языках FBD/LD.
|
Изображение блока
|
![]() |
|
Примеры
|
![]() |
![]() |
![]() |




