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