Sean Anderson xuất bản chút twiddling hacks chứa thuật toán của Eric Cole để tìm ra của một bit số nguyên trong hoạt động với nhân và tra cứu.
Thuật toán dựa trên một số "ma thuật" từ chuỗi De Bruijn. Bất cứ ai có thể giải thích các thuộc tính toán học cơ bản của chuỗi được sử dụng ở đây?
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];