Bit String
Bit Shift
note
All bit shift functions can return either their input type or the bitstring type with the same number of bits. For example, if the input is a DINT, the return can be assigned directly to either a DINT or a DWORD without conversion.
The number of bits to shift or rotate is a USINT type.
SHL - Shift Left
Shifts all bits of the input left by N places.
VAR
a : UINT := 51919;
END_VAR
printf(a, 'b16'); // 1100 1010 1100 1111
a := SHL(a, 4);
printf(a, 'b16'); // 1010 1100 1111 0000
SHR - Shift Right
Shifts all bits of the input right by N places.
VAR
a : UINT := 51919;
END_VAR
printf(a, 'b16'); // 1100 1010 1100 1111
a := SHR(a, 4);
printf(a, 'b16'); // 0000 1100 1010 1100
ROL - Rotate Left
Rotates all bits of the input left by N places. This preserves all bits of the input.
VAR
a : UINT := 51919;
END_VAR
printf(a, 'b16'); // 1100 1010 1100 1111
a := ROL(a, 4);
printf(a, 'b16'); // 1010 1100 1111 1100
ROR - Rotate Right
Rotates all bits of the input right by N places. This preserves all bits of the input.
VAR
a : UINT := 51919;
END_VAR
printf(a, 'b16'); // 1100 1010 1100 1111
a := ROR(a, 4);
printf(a, 'b16'); // 1111 1100 1010 1100