*83*

# Unsigned Right Shift Operator in Java

Shift operator is a special type of operator used for bit manipulation on data. The shift operators are used to shift the bits of its first operand left to right or right to left. There are three types of shift-operators available in Java, i.e., right-shift operator, unsigned right shift operator and left-shift operator. Java doesn’t support the unsigned left-shift operator.

- Right-shift operator(>>)
- Left-shift operator(<<)
- Unsigned Right-shift operator(>>>)

### Right-shift operator

The **Right-shift operator** is a special type of operator which is used to move the bits of the **shift-expression** to the right. The right-shift operator shifts the bits pattern to the right according to the number of positions specified the additive-expression. Let’s take an example of positive and integer numbers to understand how the right-shift operator work.

Suppose, we have two numbers, i.e., x=40, and y=-40 and the binary representation of these numbers are as follows:

x => 40 => 0000 0000 0000 0000 0000 0000 0010 1000

Negative number is the 2’s compliment of its positive number. So,

Y => -40 => 1111 1111 1111 1111 1111 1111 1101 1000

Thus x >> 2 = 0000 0000 0000 0000 0000 0000 0000 1010

AND y >> 2 = 1111 1111 1111 1111 1111 1111 1111 0110

### Left-shift operator

The **Left-shift operator** is another type of operator which is used to move the bits of the **shift-expression** to the left. The left-shift operator shifts the bits pattern to the left according to the number of positions specified the additive-expression.

Let’s understand some example of the **left-shift operator** to understand how it actually works.

x => 40 => 0000 0000 0000 0000 0000 0000 0010 1000

A negative number is the 2’s complement of its positive number. So,

Y => -40 => 1111 1111 1111 1111 1111 1111 1101 1000

Thus x >> 2 = 0000 0000 0000 0000 0000 0000 1010 0000

AND y >> 2 = 1111 1111 1111 1111 1111 1111 0110 1111

### Unsigned right-shift operator

The **unsigned right-shift** operator is a special type of right-shift operator that doesn’t use the sign bit for filling the trailing position. The unsigned right-shift operator always fills the trialing position by 0.

Let’s take the same example of the right-shift operator to understand the concept of the left-shift operator.

x => 40 => 0000 0000 0000 0000 0000 0000 0010 1000

A negative number is the 2’s complement of its positive number. So,

Y => -40 => 1111 1111 1111 1111 1111 1111 1101 1000

Thus x >>> 2 = 0000 0000 0000 0000 0000 0000 0000 1010

AND y >>> 2 = 0011 1111 1111 1111 1111 1111 1111 0110

**ShiftOperatorExample.java**

**Output**