Среда разработки Unimod PRO 2 (версия 2.3.40)
 Руководство по программированию
×

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 = -2027
    out2 := SHR(-in1, 2*2);               //out2 = 2027
    out3 := SHR(SHR(64864, 1), 4); //out3 = 2027
     
    Синтаксис на языках FBD/LD.
Изображение блока
Примеры