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。

我知道 "<<=" 是一个左移 AND 赋值运算符。但它是如何工作的?

4

4 回答 4

9

该运算符

X <<= 4;

相当于

X = X << 4;

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

于 2013-10-05T12:13:08.417 回答
3

它相当于

i = i << j;

将表示 , 的值的位i向左j移动一个位置,并将这个新值存储在i

就像i += j相当于:

i = i + j;
于 2013-10-05T12:13:56.747 回答
3

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

但是,这已在方法中本地发生leftshift,变量iinmain的值为 4。

于 2013-10-05T12:15:18.507 回答
0

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

该表达式someVariable <operator>= someValue;的含义与 相同someVariable = someVariable <operator> someValue;

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

于 2013-10-05T12:18:45.273 回答