Operator Shr (Shift Right)

Shifts the bits of a numeric expression to the right

Syntax
	KeyPgDeclareDeclare KeyPgOperatorOperator Shr ( KeyPgByrefByRef lhs KeyPgAsAs KeyPgIntegerInteger, KeyPgByrefByRef rhs KeyPgAsAs KeyPgIntegerInteger ) KeyPgAsAs 
	KeyPgIntegerInteger
	KeyPgDeclareDeclare KeyPgOperatorOperator Shr ( KeyPgByrefByRef lhs KeyPgAsAs KeyPgUintegerUInteger, KeyPgByrefByRef rhs KeyPgAsAs KeyPgUintegerUInteger ) KeyPgAsAs 
	KeyPgUintegerUInteger
	KeyPgDeclareDeclare KeyPgOperatorOperator Shr ( KeyPgByrefByRef lhs KeyPgAsAs KeyPgLongintLongInt, KeyPgByrefByRef rhs KeyPgAsAs KeyPgLongintLongInt ) KeyPgAsAs 
	KeyPgLongintLongInt
	KeyPgDeclareDeclare KeyPgOperatorOperator Shr ( KeyPgByrefByRef lhs KeyPgAsAs KeyPgUlongintULongInt, KeyPgByrefByRef rhs KeyPgAsAs KeyPgUlongintULongInt ) KeyPgAsAs 
	KeyPgUlongintULongInt

Usage
	result = lhs Shr rhs

Parameters
	lhs
		The left-hand side expression.
	rhs
		The right-hand side shift expression.

Return Value
	Returns the result of lhs being shifted right rhs number of times.

Description
	Operator Shr (Shift right) shifts all of the bits in the left-hand side 
	expression (lhs) right a number of times specified by the right-hand 
	side expression (rhs). Numerically, the result is the same as "KeyPgIntInt(lhs KeyPgOpDivide/ 
	2 KeyPgOpExponentiate^ rhs)". For example, "&b0101 Shr 1" returns the binary number &b010, 
	and "5 Shr 1" returns 2.

	If the left-hand side expression is signed and negative, the sign bit is 
	copied in the newly created bits on the left after the shift.  For 
	example, "-5 Shr 2" returns -2.

	Neither of the operands are modified in any way.

	The results of this operation are undefined for values of rhs less than 
	zero, or greater than or equal to the number of bits in the result's 
	data type.

	This operator can be overloaded for user-defined types.

Example
	'Halve a number
	For i As Integer = 0 To 10
	   
	   Print 1000 Shr i, Bin(1000 Shr i, 16)
	   
	Next i

Output:

	 1000         0000001111101000
	 500          0000000111110100
	 250          0000000011111010
	 125          0000000001111101
	 62           0000000000111110
	 31           0000000000011111
	 15           0000000000001111
	 7            0000000000000111
	 3            0000000000000011
	 1            0000000000000001
	 0            0000000000000000

Dialect Differences
	* Not available in the CompilerOptlang-lang qb dialect unless referenced with the 
	  alias __Shr.

Differences from QB
	* New to FreeBASIC

See also
	* KeyPgOpCombineShiftRightOperator Shr= (Shift Right And Assign)
	* KeyPgOpShiftLeftOperator Shl (Shift Left)
	* KeyPgBinBin
	* CatPgMathMathematical Functions

