SHR

Shift bits to the right

SHR shifts a bit value by a defined number of positions (N) to the right and fills the vacant positions with zeros.

Bit shift to the right, zero-filled on left:

  1.  (1) source register
  2.  (2) target
  3.  (3) the 4 most significant bits are filled up with zeros

Parameters

Input

IN (BOOL, WORD, DWORD)

1st input: input value

N (BOOL, WORD, DWORD)

2nd input: number of bits by which the input value is shifted to the right

Output

Var_OUT (BOOL, WORD, DWORD)

Output as input: result

NOTE

If the second input variable N (the number of bits to be shifted) is of the data type DWORD, then only the lower 16 bits are taken into account.

Example

POU header

All input and output variables used for programming this function have been declared in the POU header. The same POU header is used for all programming languages.

	VAR
		source_register: WORD:=0;
		target_register: WORD:=0;
	END_VAR

This example uses variables. You can also use a constant for the input variable.

LD body

The last N bits (here 4) of source_register are right-shifted. The vacant positions on the left are filled with zeros. The result is written into target_register.

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_F,SHR!,Instance,9,1,14,5,,?DIN?DN?C);
B(B_VARIN,,source_register,7,2,9,4,);
B(B_VARIN,,4,7,3,9,5,);
B(B_VAROUT,,target_register,14,2,16,4,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

IL body

Modified on: 2019-01-24Feedback on this pagePanasonic hotline