Use a faster way to count 1's (used by Hamming)
This commit is contained in:
parent
f2dc445412
commit
6dd6013546
@ -62,15 +62,12 @@
|
|||||||
#define DIST_TYPE 0
|
#define DIST_TYPE 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int bit1Count(int x)
|
//http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel
|
||||||
|
int bit1Count(int v)
|
||||||
{
|
{
|
||||||
int c = 0;
|
v = v - ((v >> 1) & 0x55555555); // reuse input as temporary
|
||||||
for (int i = 0 ; i < 32 ; i++)
|
v = (v & 0x33333333) + ((v >> 2) & 0x33333333); // temp
|
||||||
{
|
return ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24; // count
|
||||||
c += x & 1;
|
|
||||||
x >>= 1;
|
|
||||||
}
|
|
||||||
return c;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// dirty fix for non-template support
|
// dirty fix for non-template support
|
||||||
|
Loading…
x
Reference in New Issue
Block a user