Fixed point is very handy for accumulating small bits to gain resolution.
An example using 16 bits, where the top 8 bits (H) are the integer component and the bottom 8 bits (L) are the fractional component.
HHHH HHHH . LLLL LLLL
It's quite easy if you define a new type using a union/struct...
typedef union
{
struct
{
byte low;
byte hi;
}; unsigned all;
} fixedPoint;
fixedPoint Accumulator;
Adding to Accumulator.all rolls from low to hi.
Access to the fraction component is by Accumulator.low
Access to the integer component is by Accumulator.hi