Type optimizations
32 bit is faster than 8 on ARM
Unsigned is faster than signed and requires less checks