Подтвердить что ты не робот

Что означает ">>" в java

Я вижу строку в некотором коде, на который я смотрю, и говорит (12 → 1) - 1). Я печатаю это значение, и оно появляется как 5. Если я изменю 12 на 5, это будет выглядеть как 1. Что означает символ " → "? Благодаря

4b9b3361

Ответ 1

12 является 1100 в двоичном формате. Правый сдвиг ( → - оператор побитового сдвига справа) одним битом производит

1100 -> 0110 

который получается равным 6.

Таким образом, мы имеем, что

6 - 1 = 5

Ответ 2

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

Когда вы сдвигаете вправо на 2 бита, вы отбрасываете 2 младших бита.

x = 00111011, x = 00111011

Таким образом, когда вы делаете, x >> 2, это приводит к x = 00001110

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

Итак, приведенный ниже код приведет к 4

byte val = 100;
val = (byte) (val >> 2);
System.out.println(val);

Объясняя свой пример:

  • Двоичное представление 12: 1100
  • 12 >> 1 эквивалентно 0110, который является 6 в десятичном виде
  • поэтому (12 >> 1) - 1) эквивалентно 6-1, то есть 5

Ответ 3

Это бит-сменщик. См. здесь

Ответ 4

>> выполняет арифметическую сдвиг вправо например:

12 >> 1 = 6
-12 >> 1 = -6

Ответ 5

См. Побитовые и операторы сдвига бит

Язык программирования Java также предоставляет операторам, которые выполняют побитовые и битовые операции на интегральных типах. Подписанный слева оператор сдвига << сдвигает бит влево, а подписанный оператор правого сдвига >> сдвигает бит вправо. Бит шаблон задается левым операндом, а число позиций для перемещения по правому операнду. Оператор сдвига без знака >>> сдвигает ноль в крайнее левое положение, а самый левый положение после >> зависит от расширения знака.

(12 >> 1) - 1)         

>> сдвигает двоичный 12(1100) 1 раз вправо.
12 >> 1 == 6(110)

6 - 1 == 5

Ответ 6

Двоичный оператор смены правой части. Значение левых операндов перемещается вправо на количество бит, заданных правым операндом. Например, A → 2 даст 15, что равно 1111.

Дополнительная информация: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html