Не надо гранулировать то, чего не надо гранулировать.
2^128 = 340282366920938463463374607431768211456
32! = 263130836933693530167218012160000000
А если очень хочется - можно слить 2 неудобных сомножителя в 1 удобный, напр
25*5 = 125 < 128
или
5*3 < 16
и кодировать позиции 25го с конца (те 8 по твоему счету) бита и 5го семью битами.
Я не проверял, но, наверное, влезет.