The value of n << s is n left-shifted s bit positions; this is equivalent (even if overflow occurs) to multiplication by two to the power s.
And it's true: this is exactly the result you'd get if you multiplied -0x55555555
by two to the power of s
, due to overflow. In particular, 0x55555555
has alternating 0s and 1s, so you're shifting alternating 0s and 1s into the sign bit, so the sign is flipping every time.