Sabemos cómo se ve el valor binario de los números. Por ejemplo, el valor binario de 10 (Número Diez) es 1010 (valor binario).
A veces es necesario invertir los bits, es decir, 0’s a 1’s (ceros a unos) y 1’s a 0’s (unos a ceros). Aquí hay algunas formas en que podemos invertir los bits en Python.
1) Uso de bucles: al iterar todos y cada uno de los bits, podemos cambiar el bit 1 al bit 0 y viceversa.
Python3
bit_s = '1010' inverse_s = '' for i in bit_s: if i == '0': inverse_s += '1' else: inverse_s += '0' print("Inversed string is ", inverse_s)
Producción:
Inversed string is 0101
2) Uso del diccionario: los diccionarios son muy rápidos para acceder a un elemento, lo que requiere una complejidad de tiempo O (1).
Python3
# create a dictionary b_dict = {'0': '1', '1': '0'} bit_s = '1010' inverse_s = '' for i in bit_s: inverse_s += b_dict[i] print("Inversed string is", inverse_s)
Producción:
Inversed string is 0101
3) Uso de la comprensión de listas: las listas de comprensión son las notaciones abreviadas de acceder, agregar y manipular una lista.
Python3
bit_s = '1010' # using ternary operator with # list comprehension inverse_s = ''.join(['1' if i == '0' else '0' for i in bit_s]) print("Inversed string is", inverse_s)
Producción:
Inversed string is 0101
4) Uso del método replace() de strings: en Python, las strings tienen un método incorporado, es decir, string.replace (caracteres_existentes, caracteres_nuevos), que reemplaza todos los caracteres_existentes con caracteres_nuevos.
Python3
bit_s = '1010' # replace "1" with "2" # output : "2020" inverse_s = bit_s.replace('1', '2') # replace "0" with "1" # output : "2121" inverse_s = inverse_s.replace('0', '1') # replace "0" with "1" # output : "0101" inverse_s = inverse_s.replace('2', '0') print("Inversed string is", inverse_s)
Producción:
Inversed string is 0101
5) Uso del operador XOR bit a bit: el operador XOR Devuelve 1 si uno de los bits es 1 y el otro es 0; de lo contrario, devuelve falso.
Python3
bit_s = '1010' # convert binary string # into integer temp = int(bit_s, 2) # applying Ex-or operator # b/w 10 and 31 inverse_s = temp ^ (2 ** (len(bit_s) + 1) - 1) # convert the integer result # into binary result and then # slicing of the '0b1' # binary indicator rslt = bin(inverse_s)[3 : ] # print the result print("Inversed string is", rslt )
Producción:
Inversed string is 0101
Publicación traducida automáticamente
Artículo escrito por satyagopalkothuru y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA