¿Cuál es la forma más rápida de calcular la cantidad de bits necesarios para almacenar un número?

Estoy tratando de optimizar algunas rutinas de empaquetado y desempaquetado. Para hacer el empaque, necesito calcular el número de bits necesarios para almacenar valores enteros. Aquí está el código actual.

if (n == -1) return 32;
if (n == 0) return 1;
int r = 0;
while (n)
{
    ++r;
    n >>= 1;
}
return r;

Respuestas a la pregunta(6)

Su respuesta a la pregunta