Я думаю, вы в замешательстве. x >> y
фактически не меняет x . Он рассчитывает новое значение.
Как заметил Стивен, y
не должно быть отрицательным, и оно должно быть меньше, чем "ширина повышенного левого операнда" (читайте о повышении типа). Но в противном случае биты, которые сдвигаются "с конца", просто отбрасываются. 1 >> 2
(обратите внимание, что 2
не является отрицательным, и это меньше, чем число битов, используемых для представления 1
, что, вероятно, 32, но, безусловно, по крайней мере 16) оценивается в 0.