शॉन एंडरसन प्रकाशित बिट हैक्स twiddling एरिक कोल एल्गोरिथ्म युक्त खोजने के लिए एक के -बिट पूर्णांक में गुणा और साथ देखने आपरेशनों।
एल्गोरिथ्म डी ब्रूजन अनुक्रम से एक "जादू" संख्या पर निर्भर करता है। क्या कोई यहां इस्तेमाल किए गए अनुक्रम के मौलिक गणित गुणों की व्याख्या कर सकता है?
uint32_t v; // find the log base 2 of 32-bit v
int r; // result goes here
static const int MultiplyDeBruijnBitPosition[32] =
{
0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30,
8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31
};
v |= v >> 1; // first round down to one less than a power of 2
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
r = MultiplyDeBruijnBitPosition[(uint32_t)(v * 0x07C4ACDDU) >> 27];