Respuesta

5

Usted puede considerar una cadena de bits como set, con un 1 que representa la membresía del conjunto para el elemento correspondiente. Por lo tanto, el recuento de bits le proporciona el population count del conjunto.

Las aplicaciones prácticas incluyen compresión, criptografía y códigos de corrección de errores. Ver p. wikipedia.org/wiki/Hamming_weight y wikipedia.org/wiki/Hamming_distance.

0

Si está desarrollando su propio esquema de paridad, es posible que desee contar el número de bits. (En general, por supuesto, preferiría usar el de otra persona.) Si está emulando una computadora vieja y quiere hacer un seguimiento de qué tan rápido se hubiera ejecutado en la original, algunos tenían instrucciones de multiplicación cuya velocidad variaba con el número de 1 bit

No puedo pensar en ningún momento en el que haya querido hacerlo en los últimos diez años, así que sospecho que esto es más un ejercicio de programación que una necesidad práctica.

+0

Se puede calcular la paridad directamente con un menor número de operaciones que para un recuento de la población (a menos que su CPU tiene ' POPCNT' o similar). –

0

De manera irónica, es útil para una pregunta de entrevista porque requiere un poco de pensamiento detallado de bajo nivel y no parece enseñarse como un algoritmo estándar en los cursos de ciencia ficción.

0

A algunas personas les gusta usar mapas de bits para indicar presencia/ausencia de "cosas".

Hay un truco simple para aislar el menos significativo de 1 bit en una palabra, convertirlo a un campo de unos en los bits debajo de él, y luego puede encontrar el número de bit contando los 1 bits.

countbits((x XOR (x-1)))-1; 

Véalo funcionar.

Let x =  00101100 
Then x-1 = 00101011 
x XOR x-1 = 00000111 

que tiene 3 bits puestos, por lo que el bit 2 fue el menos significativo de 1 bit en la palabra original

Cuestiones relacionadas