public class Operator {
public static void main(String[] args) {
byte a = 5;
int b = 10;
int c = a >> 2 + b >> 2;
System.out.print(c); //prints 0
}
}
, когда 5 сдвинутых вправо с 2 битами, равно 1 и 10 сдвинутым вправо с 2 битами, равно 2, добавив значения 3 справа? Почему он печатает 0, я не могу понять даже при отладке.Оператор с правой стороны сдвига в java
Итак, 'int c = a >> (2 + b) >> 2;' становится '5 >> 12 >> 2'? то как это оценить? 5 сдвинуто с 12 бит, становится равным нулю? а затем нуль, сдвинутый на 2 бита, приведет к нулю. Это верно? – kittu
@kittu Да, это правильно. –
@ kittu-'Все двоичные операторы, кроме операторов присваивания, оцениваются слева направо; операторы присваивания оцениваются справа налево. «Итак, 5 >> 12 будет оценено, а затем их результат будет вычислен как (результат >> 2). –