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ó:
A | B | A⊕B |
---|---|---|
1 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
0 | 0 | 0 |
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àcterPython
# 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.
- XOR els dos nombres enters 'a' i ' b' i emmagatzemar el seu resultat en el nombre sencer 'a' mateix.
- 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' .
- 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>