вообще смотреть выходные данные лучше в двоичном представлении, тогда будет понятнее
наудачу предположу, что дело в этом:
x >> y — сдвиг битов вправо .Если левым операндом является int или long, затем левые биты заполняются битом знака.Если левым операндом является uint или ulong, затем левые биты заполняются нулем.
то есть попробуйте беззнаковый тип