可以调用C、C++中现成的算法库实现整数对数运算,比较高效的64位整数对数运算实现方法如下:
int Log2(uint64_t n)
{
int result;
if( n & 0xffffffff00000000) { result +=32; n >>= 32; }
if( n & 0x00000000ffff0000) { result +=16; n >>= 16; }
if( n & 0x000000000000ff00) { result +=8; n >>= 8; }
if( n & 0x00000000000000f0) { result +=4; n >>= 4; }
if( n & 0x000000000000000c) { result +=2; n >>= 2; }
if( n & 0x0000000000000002) { result +=1; n >>= 1; }
}