A note about the "six bits" thing below: I'm used to thinking in terms of C-style arrays, whose index begins at offset zero. So, if I am 31 years old right now, I can contain the value corresponding to my age in an array of size 2
5, or 0..31. Once I turn 32, I will need an array of size 2
6, as 32 steps over the bounds of the array described previously. Sure, there are 32 places in an array of size 2
5, but I begin with zero, not with one. In order to store the value 32 in such a scheme, you need 33 places, which bumps you up to 2
6.