How to filter uniform noise in a microcontroller? By uniform noise I mean a band of a fixed width, no spikes, etc.  This has to be one of the simplest examples. I'm looking for the appropriate theoretical approach as much as something relatively computationally efficient.

The true signal changes slowly (slower than 1Hz, a battery voltage).  The noise band remains fairly constant (~50mV noise on a ~4V signal).

Initial ideas:


Long moving average (e.g. a 32-point moving average).
Leaky-integrator/low-pass filter/FIR filter:
&quot;Low-pass filter&quot; in non-EE, software API contexts
Recursive arithmetic average:

y_new = (new_sample + y_last) / 2


I'd love to learn more about what I think is a geometric average.  I'm not sure I can quantify the time-to-settle/time-to-seed for these options either.

If there are more standard approaches, I'd love to learn about those as well.
You need to check the noise bandwidth using an oscilloscope. By saying noise I mean the hardware noises before digitalization by ADC. 
If the noises have high frequency component, remove it by analog filters. High frequency is defined as frequency higher than 1/2 of the sampling rate. And in practice, usually a sampling rate of 8-10 times of the pass band of the analog low pass filter is used. You may try simple RC filters.
Use FIR in a MCU to manipulate your data. Depends on the speed requirement, you can choose number of taps to use and etc. You should be able to find libraries provided by your chip manufacture, since FIR is very common in use. 


Hope it helps!