System.out.println(Integer.toBinaryString(1 << 32));
Shifts binary 1(10) by 32 times to the left. Hence: 1 in decimal
System.out.println(Integer.toBinaryString(1 << 33));
Now, int is of 4 bytes,hence 32 bits. So when you do shift by 33, it's equivalent to shift by 1. Hence : 2 in decimal