¿La forma más eficiente de calcular la distancia de hamming en rubí?

En ruby, ¿cuál es la forma más eficiente de calcular la diferencia de bits entre dos enteros sin signo (por ejemplo, la distancia de Hamming)?

Eg, tengo un entero a = 2323409845 yb = 1782647144.

Sus representaciones binarias son:

a = 10001010011111000110101110110101
b = 01101010010000010000100101101000

La diferencia de bits entre a & b es 17 ..

¡Puedo hacer un XOR lógico en ellos, pero eso me dará un número entero diferente! = 17, entonces tendría que iterar a través de la representación binaria del resultado y contar el número de 1s.

Cuál es la forma más eficiente de calcular la diferencia de bits?

Ahora, ¿cambia la respuesta para calcular la diferencia de bits de las secuencias de muchas entradas? P.ej. dadas 2 secuencias de enteros sin signo:

x = {2323409845,641760420,509499086....}
y = {uint,uint,uint...}

Cuál es la forma más eficiente de calcular la diferencia de bits entre las dos secuencias?

¿Podría repetir la secuencia o existe una forma más rápida de calcular la diferencia en toda la secuencia de una vez?

Respuestas a la pregunta(4)

Su respuesta a la pregunta