This is because the operator >>on intbehaves as arithmetic shift: the bits are "inserted" take the value of the sign bit (either 0 or 1, 1 in your case). Thus, the resulting number is obtained 0xFFFFFFFF, that is -1.
From MSDN :
int long, ( ). uint ulong, ( ).
:
Console.WriteLine((uint)x >> 31);
, 0, - , : 1.