Hi Bar,
The purpose of this bit arithmetics (one could say CPU athletics) is to reduce the size of the InnoDB data dictionary cache. If we look at dtype_t and dict_col_t, these are not exactly at any byte boundary at the moment (61 and 84 bits, respectively).
I would simply replace the mbminmaxlen field with two 3-bit fields mbminlen, mbmaxlen. This would use up one more bit and would be faster to extract (no multiplication or division, just simple bit-shifting and masking). Also the code would be simpler, because a number of macros would be removed. I think that a similar patch was done in MySQL, but apparently it was never merged to the main trees.