В чем разница между оператором → и → > ?
В чем разница между операторами 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). Это удобно при смещении отрицательных значений. Нет <<<
, так как знаковый бит находится слева, а <<
, таким образом, уже ведет себя как <<<
(заполняя нули, ничего больше).