## Question

int i = 13;
i = i << 35;
**System**.out.println(i);

What is output?

Click to view the answer104

## Note

int occupies 32 bits.

32 bits are used to represent 13.

You can shift all bits to the left only by 31 bits in an int.

If the left-hand operand of << is int, only five lower order bits' value of the right-hand operand is used as the number of bits to shift.

For example, in 13 << 35, the right-hand operand (35) can be represented in binary as follows:

00000000000000000000000000100011

The five lower order bits in 35 are 00011, which is equal to 3.

When you write 13 << 35, it is equivalent to writing 13 << 3.

13 << 35 can be considered as 13 << (35 % 32) which is 13 << 3.

## Demo

public class Main {
public static void main(**String**[] args) {
int i = 13;//from w w w . ja va 2s .c o m
i = i << 35;
**System**.out.println(i);
i = 13;
i = i << 3;
**System**.out.println(i);
}
}

## Result

## Left shift long

If the left-hand operand is long, the value of the first six lower order bits of the right-hand operand is used as the number of bits to shift.

The six lower order bits of 35 are 100011.

long i = 13;
i = i << 65;

is

i = i << (65%64);

## Demo

public class Main {
public static void main(**String**[] args) {
long i = 13;
i = i << 65;//from w w w . j av a2 s .c om
**System**.out.println(i);
i = 13;
i = i << 1;
**System**.out.println(i);
}
}

## Result