Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The shift operators in Java have the following properties (Java Language Specification (JLS) §15.19, "Shift Operators") [JLS 2005]:

  • The >> right shift is an arithmetic shift; the >>> right shift is a logical shift.
  • The types boolean, float, and double cannot use the bit shifting operators.
  • When the value to be shifted is of type int, only the five lowest-order bits of the right-hand operand are used as the shift distance. That is, the shift distance is the value of the right-hand operand masked by 31 (0x1F). The shift distance actually used is consequently always in the range 0 to 31, inclusive.
  • When the value to be shifted (left-operand) is type long, only the last 6 bits of the right-hand operand are used to perform the shift. The shift distance is the value of the right-hand operand masked by 63 (0x3F). The shift distance actually used is consequently always in the range 0 to 63, inclusive.

...

Arithmetic vs. Logical Shift

The JLS [JLS 2005] defines the behavior of the arithmetic shift operator as follows:

...

...