Informática rápida de log2 para enteros de 64 bits

Un gran recurso de programación, Bit Twiddling Hacks, propone (aquí) el siguiente método para calcular log2 de un entero de 32 bits:

#define LT(n) n, n, n, n, n, n, n, n, n, n, n, n, n, n, n, n
static const char LogTable256[256] = 
{
    -1, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
    LT(4), LT(5), LT(5), LT(6), LT(6), LT(6), LT(6),
    LT(7), LT(7), LT(7), LT(7), LT(7), LT(7), LT(7), LT(7)
};

unsigned int v; // 32-bit word to find the log of
unsigned r;     // r will be lg(v)
register unsigned int t, tt; // temporaries
if (tt = v >> 16)
{
    r = (t = tt >> 8) ? 24 + LogTable256[t] : 16 + LogTable256[tt];
}
else 
{
    r = (t = v >> 8) ? 8 + LogTable256[t] : LogTable256[v];
}

y menciona que

El método de la tabla de búsqueda toma solo alrededor de 7 operaciones para encontrar el registro de un valor de 32 bits. Si se extendiera por cantidades de 64 bits, tomaría aproximadamente 9 operaciones.

pero, por desgracia, no proporciona ninguna información adicional sobre la forma en que uno debería ir para extender el algoritmo a los enteros de 64 bits.

¿Alguna pista sobre cómo sería un algoritmo de 64 bits de este tipo?

Respuestas a la pregunta(6)

Su respuesta a la pregunta