什么是“<< =”运算符?

时间:2013-10-05 12:10:27

标签: java

我是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。

我知道“&lt;&lt; =”是一个左移AND赋值运算符。但它是如何运作的?

4 个答案:

答案 0 :(得分:9)

此运算符

X <<= 4;

相当于

X = X << 4;

它遵循与其他复合赋值运算符相同的规则。

答案 1 :(得分:3)

相当于

i = i << j;

将代表i值的位移到j左侧,并将此新值存储在i

就像i += j相当于:

i = i + j;

答案 2 :(得分:3)

在这种情况下,它会向左移动4个(或0000 0100)个2个位置,从而产生16个(或0001 0000) 被分配到i

但是,这在leftshift方法中已在本地发生,而i中的变量main的值为4.

答案 3 :(得分:0)

几乎所有Java中的二进制算术/位运算符都可以通过在运算符后添加=来“增强”。

表达式someVariable <operator>= someValue;表示与someVariable = someVariable <operator> someValue;相同。

所以i <<= j;表示i = i << j;,意思是“取i中的值,左移j位,然后存回i”。