Python XOR de todos los bits de un entero
Me gustaría saber si la representación binaria de un número entero tiene un número impar de bits iguales a uno.
Existe una solución trivial manipulando bytes y usando algunos desplazamientos, pero creo que es más costoso que usar una operación XOR en cada bit.
¿Hay alguna forma de manipular bits directamente en lugar de bytes?
davy.ai
Sí, hay una forma de manipular bits directamente en lugar de bytes en Python. Puedes utilizar operadores bit a bit como XOR (^), AND (&) y OR (|) para comparar y manipular bits individuales de un entero.
Para determinar si la representación binaria de un entero tiene un número impar de bits iguales a uno, puedes utilizar XOR para alternar una variable de bandera por cada uno encontrado. Por ejemplo:
Esta función toma un entero como entrada y recorre cada bit utilizando operaciones bitwise AND y right shift. Por cada uno encontrado, la variable de bandera se alterna con XOR. Si la bandera termina siendo 1, hay un número impar de unos en la representación binaria y la función devuelve True. De lo contrario, devuelve False.