logo

XOR de dues variables en Python

El XOR o exclusiu és una operació lògica booleana àmpliament utilitzada en criptografia i generant bits de paritat per a la comprovació d'errors i la tolerància a errors. L'operació pren dues entrades i produeix una única sortida. L'operació és tradicionalment per bits però també es pot realitzar de manera lògica. Aquest article us ensenyarà com obtenir la XOR lògica de dues variables Python .

XOR de dos nombres

Com que XOR és un operador per bits , compararà bits dels dos nombres enters bit a bit després de convertir-los en nombres binaris. La taula de veritat de XOR (binari) es mostra a continuació:



ABA⊕B
110
011
101
000

La fórmula per a l'operació XOR és:

XOR(A, B) = ( A .overline{B}) + (B.overline{A})>

Realitzar la XOR de dos nombres enters és trivial a Python, ja que el llenguatge ofereix un operador, especialment per a aquest propòsit, és a dir, un cursor ^. Però aquesta operació també es pot aconseguir utilitzant el mòdul d'operador a Python.

Nota: Algunes coses a recordar mentre es realitza l'operació xor:



taula ascii al c
  • El XOR només hauria d'estar entre elements homogenis, és a dir, el seu tipus de dades hauria de ser el mateix.
  • El bool d'una cadena resultarà És cert si la cadena no és buida i Fals si la cadena està buida.

Ara vegem l'operació XOR en diferents tipus de dades a Python.

XOR en nombres enters

Els nombres enters es converteixen primer en nombres binaris i després cada bit es compara entre ells. La resposta final es torna a convertir de nou a la forma entera original. El codi següent mostra l'ús d'un accent per realitzar la XOR de dues variables senceres.

Exemple: En primer lloc, es van inicialitzar dues variables que contenien 10 i 27 valors enters. Aleshores s'obté el xor de les dues variables utilitzant l'operador caret. Es mostra el resultat de l'operació.



cadena a caràcter
Python
# First integer a = 10 # Second integer b = 27 # Performing the xor and storing the result in separate variable xor = a ^ b print(xor)>

Sortida:

17>

Complexitat temporal: O(1)

Complexitat espacial: O(1)

XOR en booleà

La XOR de dues variables booleanes és bastant simple. La sortida de l'operació XOR és 0 o 1, que representa True o Flase respectivament en format booleà. Per tant, per obtenir la XOR lògica del tipus de dades booleà, es proporciona True o False com a valors d'entrada.

Exemple: Primer es van inicialitzar dues variables booleanes amb un valor i després es realitza l'operació XOR amb l'operador de cursor.

Python
# First boolean a = True # Second boolean b = False # Performing the xor operation xor = a ^ b print(xor)>

Sortida:

True>

Complexitat temporal: O(1)

Complexitat espacial: O(1)

'abc' està en números'

XOR a la cadena

Com que les cadenes són una seqüència, el tipus de dades s'ha de normalitzar perquè l'operació s'hi realitzi. Per tant, les cadenes es convertirien a bool, i després es podria realitzar l'operació xor sobre elles. Però a causa d'això, el resultat de l'operació seria binari, és a dir, en donaria lloc a qualsevol És cert o Fals (a diferència de xor dels nombres enters on es produeix el valor resultant).

Exemple: En primer lloc es defineixen dues cadenes. Un d'ells és una cadena buida. A continuació, les cadenes es converteixen al tipus de dades booleà i s'hi realitza l'operació xor. Es mostra el resultat.

Python
# First string a = 'Hello World!' # Second string b = '' # Performing the xor operation xor = bool(a) ^ bool(b) print(xor)>

Sortida:

True>

Complexitat temporal: O(n)

Complexitat espacial: O(n), on n és la longitud de la corda

XOR de dues variables mitjançant el mòdul d'operador

Python té un mòdul d'operadors, que proporciona un conjunt de funcions predefinides per a operadors aritmètics, lògics, de bits i de comparació. També proporciona la funció XOR de l'operador bit a bit que es pot utilitzar per obtenir la XOR de dues variables.

Exemple: En primer lloc, importeu el mòdul d'operador. A continuació, s'inicialitzen dues variables amb un valor i després es realitza l'operació XOR amb la funció xor dels mòduls d'operador.

Python
# import module import operator # First integer a = 10 # Second integer b = 27 # Performing the xor using operator module xor = operator.xor(a,b) print(xor)>

Sortida:

javatpoint java
17>

Complexitat temporal: O(1)

Complexitat espacial: O(1)

Canvi de dos nombres enters mitjançant XOR sense variable temporal

L'operació XOR bit a bit a Python també es pot utilitzar per intercanviar dos nombres enters sense utilitzar la variable temporal. Vegem com funciona això.

a = a ^ b b = a ^ b a = a ^ b>

L'intercanvi requereix tres expressions amb l'operació XOR.

  1. XOR els dos nombres enters 'a' i ' b' i emmagatzemar el seu resultat en el nombre sencer 'a' mateix.
  2. Ara XOR el valor actualitzat de 'a' amb ‘b’. Això donarà com a resultat el valor original de 'a' , que ara s'emmagatzema a 'b' .
  3. Finalment, XOR 'a' amb el valor ara actualitzat de 'b' al pas anterior. El resultat serà el valor original de 'b' . que ara està emmagatzemat 'a' .

Exemple: En primer lloc, s'inicien dos nombres enters. A continuació, seguint els tres passos anteriors, l'intercanvi de dos nombres enters es fa mitjançant l'operador XOR. Finalment, imprimiu els enters intercanviats.

Python
# First integer a = 10 # Second integer b = 27 print('Before Swapping:') print('a =', a) print('b =', b) # swapping integers using XOR a = a ^ b b = a ^ b a = a ^ b print('After Swapping:') print('a =', a) print('b =', b)>

Sortida:

Before Swapping: a = 10 b = 27 After Swapping: a = 27 b = 10>