In Java, all number primitives are signed. For example, an int always represent values from [-2^31 - 1, 2^31], keeping the first bit to sign the value - 1 for negative value, 0 for positive.
Basic shift operators >> and << are signed operators. They will conserve the sign of the value.
...