Commit 6dd60135 authored by Peng Xiao's avatar Peng Xiao

Use a faster way to count 1's (used by Hamming)

parent f2dc4454
......@@ -62,15 +62,12 @@
#define DIST_TYPE 0
#endif
int bit1Count(int x)
//http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel
int bit1Count(int v)
{
int c = 0;
for (int i = 0 ; i < 32 ; i++)
{
c += x & 1;
x >>= 1;
}
return c;
v = v - ((v >> 1) & 0x55555555); // reuse input as temporary
v = (v & 0x33333333) + ((v >> 2) & 0x33333333); // temp
return ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24; // count
}
// dirty fix for non-template support
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment