用于操作数的逐位右移位的 IEC 操作符。
erg:= SHR (in, n)
in:将向右移位的操作数
n:in 向右进行移位的位数
注意: 如果 n 超过了数据类型宽度,则取决于目标系统如何填充 BYTE, WORD, DWORD 和 LWORD 操作数。部分目标设备将以零 (0) 填充,而有些设备则以 n MOD <register width> > 填充。
以下十六进制表示法的示例表明了算术运算的结果取决于输入变量的类型(BYTE 或 WORD)。
PROGRAM shr_st
VAR
in_byte : BYTE:=16#45; (* 2#01000101 )
in_word : WORD:=16#0045; (* 2#0000000001000101 )
erg_byte : BYTE;
erg_word : WORD;
n: BYTE :=2;
END_VAR
erg_byte:=SHR(in_byte,n); (* Result is 16#11, 2#00010001 *)
erg_word:=SHR(in_word,n); (* Result is 16#0011, 2#0000000000010001 *)
LD in_byte
SHR 2
ST erg_byte