グッドJavaプログラマ学習ルートは、Javaでの変位動作を共有し、Javaで、変位動作は、基本的な操作に属し、シンボル<<と>>である左右の変位の変位。整数のみが他の人がJavaで考慮していないので、シフト操作がメモリの変位の二進整数表現であるので、変位はJavaで正と負の数に分割され、シフトさせることができます。
<<すなわち、モバイルは、2倍の数で乗算され、すなわち、何回、2を乗じ、すなわち、例えば、5 << 2 * 2 * 2 = 20、即ち、右方向変位>>に対応する正の数、左方向への変位のために2で割った当量、注意が整数整数で割られます。すなわち、例えば、5 >> 1/2 = 2。
次の例:
5 << 1、私たちは、一例として、int型:
5番
int型はバイナリとして表される:0,000,000,000,000,000 0,000,000,000,000,101
即ち、左から1:0000 0000 0000 0000 0,000,000,000,001,010(後方パッチ0)
だから、結果は次のとおりです。数10
5 >> 1、私たちは、一例として、int型:
5番
int型はバイナリとして表される:0,000,000,000,000,000 0,000,000,000,000,101
すなわち、右に1:0000 0000 0000 0000 0,000,000,000,000,010(高いビット0)
だから、結果は次のとおりです。数2
だから、正の数のために、あなたは、変位を自由に使用でき、乗算や除算の結果はほとんど差はなく、より良いパフォーマンスではありません。
変位動作はJavaで署名された変位と呼ばれているので、それが負の場合と同様、Javaの変位で、注意して使用すべきです。それを計算する方法を、直接次のように例示されている端部の変位を署名しました。
-5 << 1、我々はint型、例えば、メモリ内の負の存在に起因は、補体あり、以下を参照してください。
デジタル-5
int型バイナリ元のコードは次のように表現される:1,000,000,000,000,000 0,000,000,000,000,101
そして、その反転は、次のとおりです。1,111,111,111,111,111 1,111,111,111,111,010
補体は、次のとおりです。1,111,111,111,111,111 1,111,111,111,111,011
すなわち、左の結果に1:1,111,111,111,111,111 1,111,111,111,110,110(後方パッチ0)
計算結果が反転している:1,111,111,111,111,111 1,111,111,111,110,101
結果は、元のコードのように計算される:1,000,000,000,000,000 0,000,000,000,001,010
だから、結果は次のとおりです。デジタル-10
それは次のようになりますか2を乗じたが、別の数がしようとします:
例えば、二進数場合です:1,110,000,000,000,000 0,000,000,000,000,001
そして、その抗コードは次のとおりです。1,001,111,111,111,111 1,111,111,111,111,110
補体は、次のとおりです。1,001,111,111,111,111 1,111,111,111,111,111
すなわち、左の結果に1:0,011,111,111,111,111 1,111,111,111,111,110
最も重要な結果は0であるので、結果は2倍想像されていないので、正の数でなければなりません。
それは右である場合には、高一で補足され、その結果は、例えば、通常と同じではありません。
-5 >> 1、我々は、INT、例えば、メモリ内の負の存在に起因は、補体あり、以下を参照してください。
デジタル-5
int型バイナリ元のコードは次のように表現される:1,000,000,000,000,000 0,000,000,000,000,101
そして、その反転は、次のとおりです。1,111,111,111,111,111 1,111,111,111,111,010
補体は、次のとおりです。1,111,111,111,111,111 1,111,111,111,111,011
すなわち、右の結果に:1,111,111,111,111,111 1,111,111,111,111,101(高S.1)
計算結果が反転している:1,111,111,111,111,111 1,111,111,111,111,100
結果は、元のコードのように計算される:1,000,000,000,000,000 0,000,000,000,000,011
だから、結果は次のとおりです。数-3
Javaでは、これは、2 -5 -2で割っ-3が、それらは、変位されるべきです。
さらに、次の例の場合:
-1 >> 1、我々はint型、例えば、メモリ内の負の存在に起因するが補完され、以下を参照してください。
デジタル-1
int型バイナリ元のコードは次のように表現される:1,000,000,000,000,000 0,000,000,000,000,001
そして、その抗コードは次のとおりです。1,111,111,111,111,111 1,111,111,111,111,110
補体は、次のとおりです。1,111,111,111,111,111 1,111,111,111,111,111
すなわち、右の結果に:1,111,111,111,111,111 1,111,111,111,111,111(高S.1)
デジタル-1:だから結果は知っているし、ゆっくりとカウントされません。
だから、-1のために、どんなに右、結果が-1されていない、そしてそれは2で割られている場合、結果は0です。
結論、陽性である場合、シフト動作を使用することが可能である場合、使用することができるのパフォーマンスを向上させることができ、および負の数のために、それを使用しないことが可能である、遠い除算結果からです。