Shift operator in java (bitwise right shift and left shift)

Let’s learn shift operator in java / bitwise right shift and left shift.

Shift operator in java

A shift operator basically used to perform bit manipulation on a number by shifting bits of first operand right/left.

  • signed left shift operator or bitwise left shift operator (<<)
  • signed right shift operator or bitwise right shift operator (>>)
  • unsigned right shift operator or bitwise zero fill right shift operator (>>>)

signed left shift operator (<<)

signed left shift operator shifts bits of the number to left to a specified number of positions. For example b << 2 means to shift bits of b towards left 2 positions.

Consider an example 9 << 2. Here we are using bitwise left shift operator 9 by 2. So the binary format of 9 is 1 0 0 1.

Now if we apply bitwise left shift operator to above binary number, left shift operator shifts this number by 2 bits.

Here shifting by 2 bits means; we have 1 0 0 1 it adds or appends two more zeros. That is 1 0 0 1 0 0 = 36. Let’s see java program.

public class LeftShiftOperatorDemo 
{
   public static void main(String[] args) 
   {
      int b = 9;
      System.out.println((b << 2));
   }
}


Output:

36


signed right shift operator (>>)

signed right shift operator shifts bits of the number to right to a specified number of positions. For example b >> 2 means to shift bits of b towards right 2 positions.

Consider an example 9 >> 2. Here we are using bitwise right shift operator 9 by 2. So the binary format of 9 is 1 0 0 1.

Now if we apply bitwise right shift operator to above binary number, right shift operator drops/removes 2 bits.

Here removing 2 bits means; we have 1 0 0 1 it removes 0 and 1. That is 1 0 = 2. Let’s see java program.

public class RightShiftOperatorDemo 
{
   public static void main(String[] args) 
   {
      int b = 9;
      System.out.println(b >> 2);
   }
}


Output:

2


unsigned right shift operator or bitwise zero fill right shift operator (>>>)

bitwise zero fill right shift operator shifts bits of the number to right to a specified number of positions. For example b >>> 2 means to shift bits of b towards right 2 positions.

bitwise zero fill right shift operator is same as signed right shift operator. bitwise zero fill right shift operator can be applied to both positive and negative number; output always be a positive number. Now let’s see java program.

public class UnsignedRightShiftDemo 
{
   public static void main(String[] args) 
   {
      int a = 9;
      int b = -1;
      System.out.println(a >>> 2);
      System.out.println(b >>> 10);
   }
}


Output:

2
4194303


Also read – polymorphism in java