# Java - What is the result of 13 << 35?

## Question

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

What is output?

`104`

## 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);
}
}
```

## 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);
}
}
```