Estoy tratando de optimizar algunas rutinas de empaque y desempaquetado de bits. Para hacer el embalaje, necesito calcular la cantidad de bits necesarios para almacenar valores enteros. Aquí está el código actual.¿Cuál es la forma más rápida de calcular el número de bits necesarios para almacenar un número
if (n == -1) return 32;
if (n == 0) return 1;
int r = 0;
while (n)
{
++r;
n >>= 1;
}
return r;
Espero que no intente comprimir los datos y prefijar cada valor con el recuento de la cantidad de bits en el valor. – Skizz
Cuando escribe "32", supongo que quiere decir sizeof (int) * CHAR_BIT. ¿Desea que su código funcione donde sizeof (int) == 8? –
Si usa >>, realmente quiere que n no esté firmado. –