Diferentes formas de invertir los bits binarios en Python

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *