Dado un número entero n, quiero alternar todos los bits en la representación binaria de ese número en el rango decir inferior a superior. Para hacer esto hago lo siguiente [bit_string es una cadena que contiene 1 y 0 y es una representación binaria de n]Voltear bits en python
for i in range(lower,upper+1):
n ^= (1 << len(bit_string)-1-i) #Toggle the ith bit
Entonces, también necesito para determinar que da un rango, digamos inferior a superior, cómo muchos bits de código son set.My de hacerlo es la siguiente:
number_of_ones = 0
for i in range(lower,upper+1):
if(n & (1 << len(bit_string)-1-i)): #Check the ith bit
number_of_ones+=1
Pero, si n es muy grande, creo que estos algoritmos serían lento. ¿Hay alguna manera de hacer que estas dos operaciones sean más rápidas/más eficientes?
Usted
Estás haciendo un volteo de bits, pero en una cadena y en Python ... ¿Qué hace esto (en un contexto más amplio)? Si te preocupa la velocidad, creo que estás haciendo todo mal. –
Es un problema de programación estoy trabajando en:) ... ¿Debería usar algún otro lenguaje como decir C o C++? – Tom
¿Es esta tarea? –