ROL - цикличный побитовый сдвиг влево
Бинарный оператор ROL циклично сдвигает влево биты по алгоритму:
-
В первом операнде in1 задается исходное значение для сдвига бит, а во втором операнде in2 - количество сдвигаемых бит в диапазоне [1 .. 31]. Если in2<0 или in2>31, сдвиг не осуществляется, возвращается значение in1.
-
При in2=1 осуществляется сдвиг всех битов на одну позицию влево, а значение старшего бита записывается в младший бит.
-
Предыдущая операция повторяется в количество in2 раз.Оба операнда и возвращаемое значение должны иметь целочисленный 32-битный тип данных INTEGER. В качестве операнда могут передаваться константы, переменные или выражения с результатом в виде целого числа. При сдвиге битов знак числа может изменяться.Пример работы оператора продемонстрирован на следующем изображении:

Синтаксис на языке ST.
|
Синтаксис
|
|
out := ROL(in1, in2)
|
|
Примеры
|
|
in1 := 2027;
in2 := 1;
out1 := ROL(in1, in2); //out1 = 4054
out2 := ROL(1000*2+27, 1); //out2 = 4054
out3 := ROL(5, 29); //out3 = -1610612735
|
Синтаксис на языках FBD/LD.
|
Изображение блока
|
![]() |
|
Примеры
|
![]() |


