The result of E1 >> E2 is implementation-defined for a right shift of an object with a signed type having a negative value if E1 has a signed type and a negative value.
In this implementation, an arithmetic right shift is performed.