CATEGORII DOCUMENTE 
loading...

The << and >> operators are used to perform bit shifting operations.


shiftexpression:
additiveexpression
shiftexpression << additiveexpression
shiftexpression >> additiveexpression
For an operation of the form x << count or x >> count, binary operator overload resolution (§7.2.4) is applied to select a specific operator implementation. The operands are converted to the parameter types of the selected operator, and the type of the result is the return type of the operator.
When declaring an overloaded shift operator, the type of the first operand must always be the class or struct containing the operator declaration, and the type of the second operand must always be int.
The predefined shift operators are listed below.
Shift left:
int
operator <<(int x, int count);
uint operator <<(uint x, int count);
long operator <<(long x, int count);
ulong operator <<(ulong x, int count);
The << operator shifts x left by a number of bits computed as described below.
The highorder bits of x are discarded, the remaining bits are shifted left, and the loworder empty bit positions are set to zero.
Shift right:
int
operator >>(int x, int count);
uint operator >>(uint x, int count);
long operator >>(long x, int count);
ulong operator >>(ulong x, int count);
The >> operator shifts x right by a number of bits computed as described below.
When x is of type int or long, the loworder bits of x are discarded, the remaining bits are shifted right, and the highorder empty bit positions are set to zero if x is nonnegative and set to one if x is negative.
When x is of type uint or ulong, the loworder bits of x are discarded, the remaining bits are shifted right, and the highorder empty bit positions are set to zero.
For the predefined operators, the number of bits to shift is computed as follows:
When the type of x is int or uint, the shift count is given by the loworder five bits of count. In other words, the shift count is computed from count & 0x1F.
When the type of x is long or ulong, the shift count is given by the loworder six bits of count. In other words, the shift count is computed from count & 0x3F.
If the resulting shift count is zero, the shift operators simply return the value of x.
Shift operations never cause overflows and produce the same results in checked and unchecked contexts.
When the left operand of the >> operator is of a signed integral type, the operator performs an arithmetic shift right wherein the value of the most significant bit (the sign bit) of the operand is propagated to the highorder empty bit positions. When the left operand of the >> operator is of an unsigned integral type, the operator performs a logical shift right wherein highorder empty bit positions are always set to zero. To perform the opposite operation of that inferred from the operand type, explicit casts can be used. For example, if x is a variable of type int, the operation unchecked((int)((uint)x >> y)) performs a logical shift right of x.
loading...

Vizualizari: 420
Importanta:
Termeni si conditii de utilizare  Contact
© SCRIGROUP 2020 . All rights reserved
Distribuie URL
Adauga cod HTML in site