Java でシフト演算子を使用する方法

Javaでのシフト演算子には、左シフト演算子(<<)、右シフト演算子(>>)、および符号なし右シフト演算子(>>>)の3種類があります。 これらは、バイナリ数を指定されたビット数だけ左または右にシフトするために使用されます。

  1. 左へシフトする演算子(<<):ある数の 2 進法表現を指定されたビット数だけ左に移動し、右側に 0 を追加します。例として、a << b は a を b ビット左に移動することを表します。

int a = 5; int b = a << 2; // b は 20 となる

  1. 数値のバイナリ表現を、指定されたビット数だけ右にシフトします。シフトした方の端は、元の最上位ビットで埋められます。この数値が正の場合、0で埋められ、負の場合は1で埋められます。たとえば、a >> b は、a を b ビット右にシフトすることを表します。

int a = 16; int b = a << 2; // b = 16 << 2 <=> b = 16 * (2^2) <=> b = 64

  1. 無符号右シフト演算子(>>>):数値のバイナリ表現を右に指定したビット数だけシフトし、左側に0でパディングします。数値が正か負かに関係なく、0でパディングします。例えば、a >>> b はaをbビット右にシフトすることを示します。

int a = -16; int b = a >> 2; // b = 1073741821

シフト演算子はbyte、short、int、longなどの整数型に対して使用できます。シフト演算子のオペランドは定数、変数、または式です。

bannerAds