2013-10-05 10 views
0

Я новый ученик Java. У меня есть простая программа с помощью оператора так же, как:Что такое оператор << <<?

public class Test 

    { 
     public static void leftshift(int i, int j) 
     { 
      i <<= j; 
     } 
     public static void main(String args[]) 
     { 
      int i = 4, j = 2; 
      leftshift(i, j); 


     System.out.printIn(i); 
    } 
} 

Я побежал этот код, выход 4.

Я знаю, что «< < =» является левого сдвига и назначением оператора. Но как это работает?

+0

Это [соединение оператора присваивания] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.26.2) –

+0

нет это не дублировать –

+0

HTTP : //stackoverflow.com/questions/9656026/who-can-explain-the-java-operator <= этот тогда? Оба объясняют, как это работает. – Mat

ответ

9

Этот оператор

X <<= 4; 

эквивалентно

X = X << 4; 

Это следует тем же правилам, что и другие операторы присваивания соединения.

3

Его эквивалент

i = i << j; 

сдвигают биты, представляющие значение i, по j мест влево, и сохранить это новое значение в i

Так же, как i += j эквивалентно:

i = i + j; 
3

В этом случае он сдвигает 4 (или 0000 0100) 2 позиции к слева, в результате чего 16 (или 0001 0000) присваивается i.

Тем не менее, это произошло локально в методе leftshift, оставляя переменную i в main со значением 4.

0

Практически все из двоичной арифметики/битовые операторы в Java может быть «повышена», добавив = после оператора.

Выражение someVariable <operator>= someValue; означает то же, что и someVariable = someVariable <operator> someValue;.

So i <<= j; означает i = i << j;, что означает «взять значение в i, сдвинуть левый j бит, а затем сохранить обратно в i». не

Смежные вопросы