given
int a = 1; (00000000000000000000000000000001),
what I did is just
a=(a<<31)>>31;
I assume a should still be 1 after this statement (nothing changed I think). However, it turns out to be -1 (11111111111111111111111111111111). Anyone knows why?