Just to add more to what Kking is saying. In case you are wondering how the subtraction comes from.

If the left operand is an int, then you know that you can only do a shift 0 through 31 times since an int has size 32 in bits. so if the right operand exceeds 31, you know that it goes over the bit size, then the actual number of shifts will be (right operand % 32). So in the case of 33, it would be 33%32, which is 1. So you actually would shift 1 time( I hope Kking will review his subtraction and verify this). Another way to consider it is to say that if the left operand is an int, then only the last five bits of the right operand will be used for the shift. So for 33, we can write it in binary as :

1 0 0 0 0 1

and the last five bits are :

0 0 0 0 1

which is decimal 1. so we shift 1 time.

Herbert.