В чем разница между операторами Java >> и >>>?

В чем разница между оператором → и → > ?

Ответ 1

>>> сдвигает вправо и заполняет 0 в левом конце, а >> заполняет знаковый бит.

Это имеет значение для подписанных интегральных типов (т.е. все, кроме byte), где отрицательное значение имеет знаковый бит.

Ответ 2

>> Подписанный оператор сдвига вправо и >>> беззнаковый оператор сдвига вправо

Оператор смены правой строки

Оператор сдвига вправо сдвиг >> сдвиг левый операнд вправо с расширением знака на количество бит, заданный его операндом справа. Это означает, что значение в n месте смещается вправо, вызывая n бит высокого порядка, который содержит то же значение, что и для несмещенного значения. Этот оператор никогда не бросает исключение.

Беззнаковый оператор смены вправо

Оператор без знакового сдвига >>>сдвигает нуль в самый левый однако крайнее левое положение после " → " зависит от расширения знака.

Ответ 3

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

От http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html

Ответ 4

Вот объяснение с примерами:

http://www.roseindia.net/java/master-java/bitwise-bitshift-operators.shtml

>> заполняет знак знаковым битом слева (то есть заполняет 1 для отрицательных значений, 0 для положительных), тогда как >>> не всегда (всегда 0). Это удобно при смещении отрицательных значений. Нет <<<, так как знаковый бит находится слева, а <<, таким образом, уже ведет себя как <<< (заполняя нули, ничего больше).