On 21 February 2012 17:44, Richard Broersma <richard.broersma@gmail.com> wrote:
> There are probably fast better ways. But this is one way:
>
> postgres=> SELECT LENGTH( REPLACE( CAST( B'101000000000000000000010'
> AS TEXT ), '0', ''));
> length
> --------
> 3
That seems like a good way to do it, unless you need to do this on a
lot of data and need it to be very fast or something.
If so, then maybe have a look at this:
http://en.wikipedia.org/wiki/Hamming_weight#Efficient_implementation
and maybe even this:
http://en.wikipedia.org/wiki/Hamming_weight#Processor_support
and implement it as a user defined function in C.
--
Michael Wood <esiotrot@gmail.com>