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メソッド内でローカルに発生したため、変数の値は 4 のままiですmain

于 2013-10-05T12:15:18.507 に答える
0

Java のほとんどすべてのバイナリ算術/ビット演算子は=、演算子の後に を追加することで「拡張」できます。

と同じsomeVariable <operator>= someValue;意味someVariable = someVariable <operator> someValue;です。

つまり、「i の値を取得し、左に j ビットシフトしてから、i に戻す」という意味ですi <<= j;i = i << j;

于 2013-10-05T12:18:45.273 に答える