Ok, I think there's a tutorial about it somewhere, but the & symbol (as well as doing other things), is the bitwise AND operator. Essentially if you had the following two bytes:

Code:
00010011
00000111
and you &'d them together, the resultand byte is attained by AND-ing together all the individual bytes (starting from either end, I'll start on right)

Code:
1 AND 1 = 1 // 0th bits
1 AND 1 = 1 // 1st bits
0 AND 1 = 0 // 2nd bits
0 AND 0 = 0 // etc
1 AND 0 = 0
etc.
so the byte you get back, is -

Code:
00000011
get it. This can be used to increase numbers as your code does.