В чем разница между именованными функциями shr () и ushr () в Kotlin - PullRequest
2 голосов
/ 03 августа 2020

Разница между функциями a.shr (b) и a.ushr (b) на языке Kotlin. При использовании обеих функций я получаю одинаковый результат, поэтому, пожалуйста, помогите узнать разницу между этими функциями

1 Ответ

3 голосов
/ 03 августа 2020
  • shr сдвигает ваши биты вправо
  • ushr также сдвигает вправо, но заполняет самый левый бит нулями

Если вы только выполняя битовые сдвиги на положительные значения, разницы нет. Если вы делаете то же самое с отрицательными значениями, разница будет большой.

                 Int          Binary
                 -63532       11111111111111110000000000000100    
-63532 ushr 1    2147450882   01111111111111111000000000000010
-63532 shr 1     -32766       11111111111111111000000000000010
                              ^
                              |
                          Difference

В этом случае ushr перевернет самый левый бит, так что теперь у вас будет положительное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...