On Fri, Jan 20, 2006 at 10:37:54PM +0100, Martijn van Oosterhout wrote:
> Given that all it's doing is counting bits, a simple fix would be to
> loop over bytes, use XOR and count ones. For extreme speedup create a
> lookup table with 256 entries to give you the answer straight away...
For extra obfscation:
unsigned v = (unsigned)c;
int num_bits = (v * 0x1001001001001ULL & 0x84210842108421ULL) % 0x1f;
(More more-or-less intelligent options at
http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetNaive :-) )
/* Steinar */
--
Homepage: http://www.sesse.net/