IEC-Betreiber⮫ „Übersicht“: Bitweises Linksschieben eines Operanden : erg:= SHL (in, n)
in wird um n Bits nach links verschoben. Ist n > Datentypbreite, werden BYTE, WORD und DWORD mit Nullen aufgefüllt. Wenn jedoch vorzeichenbehaftete Datentypen verwendet werden, wie z. B. INT, dann wird in solchen Fällen eine arithmetische Verschiebung durchgeführt, d.h. es wird mit dem Wert des obersten Bits gefüllt.
Die Anzahl der Bits, die für die arithmetische Operation verwendet werden, wird durch den Datentyp der Eingangsvariablen bestimmt! Wenn die Eingangsvariable eine Konstante ist, wird der kleinstmögliche Datentyp verwendet. Der Datentyp der Ausgangsvariablen hat keinerlei Einfluss auf die Rechenoperation.
Im folgenden Beispiel in hexadezimaler Schreibweise sehen Sie, dass Sie je nach Datentyp der Eingangsvariablen (BYTE oder WORD) unterschiedliche Ergebnisse für erg_byte und erg_word erhalten, obwohl die Werte der Eingangsvariablen in_byte und in_word gleich sind.
In ST z. B. mit
PROGRAM shl_st VAR in_byte : BYTE:=16#45; in_word : WORD:=16#45; erg_byte : BYTE; erg_word : WORD; n: BYTE :=2; END_VAR erg_byte:=SHL(in_byte,n); (* Result is 16#14 *) erg_word:=SHL(in_word,n); (* Result is 16#0114 *)
Beispiel in FBD:
