For information on shifting, I recommend you read
Cat and Mouse Game with Bits Actually this question highlights the one understatement of the story.
In
Java several steps happen in shifting.
1) If the left hand operand is smaller than an int, it is cast to an int.
2) If the left hand operand is an int, the right hand operand is then anded (&) with 0x1f or 31
in your example, 99 is anded with 31
99 - 00000000 00000000 00000000 01100011
31 - 00000000 00000000 00000000 00011111
Result - 00000000 00000000 00000000 00000011 - 3
so, 9 is shifted by 3
3) If the left hand operand is a long, the right hand operand is & with 0x3f or 63