В Java есть два вида операторов сдвига вправо: >>>
и >>
. Они используются для сдвига битового представления числа вправо.
Оператор сдвига >>
Оператор >>
(сдвиг вправо) сдвигает биты числа вправо на указанное количество позиций. Важно отметить, что при этом знак числа сохраняется, т.е. если было отрицательное число, то и после сдвига оно останется отрицательным.
int a = -10; a = a >> 2; // результат будет -3
Оператор сдвига >>>
Оператор >>>
(беззнаковый сдвиг вправо) также сдвигает биты числа вправо на указанное количество позиций, но при этом знак числа всегда становится положительным, т.е. старший бит (знаковый) устанавливается в 0.
int a = -10; a = a >>> 2; // результат будет 1073741821
Вывод
Важно отличие между операторами >>
и >>>
заключается в том, как они обрабатывают старший (знаковый) бит. >>
сохраняет значение старшего бита, тем самым сохраняя знак числа, в то время как >>>
устанавливает старший бит в 0, делая число положительным.
Добавить комментарий