shr
сдвигает ваши биты вправо ushr
также сдвигает вправо, но заполняет самый левый бит нулями
Если вы только выполняя битовые сдвиги на положительные значения, разницы нет. Если вы делаете то же самое с отрицательными значениями, разница будет большой.
Int Binary
-63532 11111111111111110000000000000100
-63532 ushr 1 2147450882 01111111111111111000000000000010
-63532 shr 1 -32766 11111111111111111000000000000010
^
|
Difference
В этом случае ushr
перевернет самый левый бит, так что теперь у вас будет положительное значение.