1. Bit Shift Operators
- <<: Shift left.
- >>: Shift to the right.
- >>>: Unsigned right shift (with zero padding).
2. General Syntax of Shift Operators
value << num-bits: Shifts the value bits to the left.
value >> num-bits: Shifts the value bits to the right, preserving the sign bit.
value >>> num-bits: Shifts the value bits to the right, inserting zeros on the left.
3. Shift to the Left
- Each shift to the left causes all bits of the value to be shifted one position to the left.
- A bit 0 is inserted to the right.
- Effect: Multiplication of the value by 2 with each displacement.
4. Shift to the Right
- Each right shift moves all bits one position to the right.
- The sign bit is preserved: 0 for positive values and 1 for negative values.
- Effect: Divide the value by 2 at each shift, with rounding down.
5. Shift to the Right No Signal (>>>)
- No sign bit preservation; inserts 0 on the left.
- Used in bit patterns where the value is treated as an unsigned number.
6. Displacement is not rotational
- Bits shifted out are lost.
- Shifting does not allow recovery of bits shifted out.
Example:
Left and Right Shift
*ShiftDemo *
Care when Shifting Byte and Short Values
- Java automatically promotes byte and short to int when evaluating an expression.
Example:
- Shifting a negative byte value to the right: when promoted to int, the higher order bits are filled with 1.
- When shifting right with zero padding (>>>), this can cause problems as the top 24 bits will be 1 before zeros start to appear.
Abbreviated Assignments with Bitwise Operators
- All binary bitwise operators have a shorthand form that combines an assignment with the bitwise operation.
Example
x = x ^ 127;
x ^= 127;
Copy after login
The above is the detailed content of Shift operators and bitwise shorthand assignments. For more information, please follow other related articles on the PHP Chinese website!