Qual é a maneira mais rápida de calcular o número de bits necessários para armazenar um número

Estou tentando otimizar algumas rotinas de empacotamento e descompactação de bits. Para fazer a embalagem, preciso calcular o número de bits necessários para armazenar valores inteiros. Aqui está o código atual.

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

questionAnswers(6)

yourAnswerToTheQuestion