Lo XOR o esclusivo è un'operazione logica booleana ampiamente utilizzata nella crittografia e nella generazione di bit di parità per il controllo degli errori e la tolleranza agli errori. L'operazione richiede due input e produce un unico output. Tradizionalmente l'operazione viene eseguita bit a bit, ma potrebbe essere eseguita anche in modo logico. Questo articolo ti insegnerà come ottenere lo XOR logico di due variabili Pitone .
XOR di due numeri
Poiché XOR è a operatore bit a bit , confronterà i bit di entrambi gli interi bit per bit dopo averli convertiti in numeri binari. La tabella della verità per XOR (binario) è mostrata di seguito:
UN | B | A⊕B |
---|---|---|
1 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
0 | 0 | 0 |
La formula per l'operazione XOR è:
XOR(A, B) = ( A .overline{B}) + (B.overline{A})>
Eseguire lo XOR di due numeri interi è banale in Python, poiché il linguaggio offre un operatore, appositamente per questo scopo, ovvero l'accento circonflesso ^. Ma questa operazione può essere ottenuta anche utilizzando il modulo operator in Python.
Nota: Alcune cose da ricordare durante l'esecuzione dell'operazione xor:
stlc
- Lo XOR dovrebbe essere solo tra elementi omogenei, ovvero il loro tipo di dati dovrebbe essere lo stesso.
- Risulterà il bool di una stringa VERO se la stringa non è vuota e Falso se la stringa è vuota.
Ora vediamo l'operazione XOR su diversi tipi di dati in Python.
XOR su numeri interi
I numeri interi vengono prima convertiti in numeri binari e poi ogni bit viene confrontato tra loro. La risposta finale viene quindi nuovamente riconvertita nella forma intera originale. Il codice seguente illustra l'utilizzo di un segno di accento circonflesso per eseguire lo XOR di due variabili intere.
Esempio: Innanzitutto sono state inizializzate due variabili contenenti 10 e 27 valori interi. Quindi lo xor delle due variabili si ottiene utilizzando l'operatore caret. Viene visualizzato il risultato dell'operazione.
oggetto JavaPitone
# First integer a = 10 # Second integer b = 27 # Performing the xor and storing the result in separate variable xor = a ^ b print(xor)>
Produzione:
17>
Complessità temporale: O(1)
Complessità spaziale: O(1)
XOR su booleano
Lo XOR di due variabili booleane è abbastanza semplice. L'output dell'operazione XOR è 0 o 1 che rappresenta rispettivamente True o Flase in formato booleano. Pertanto, per ottenere lo XOR logico del tipo di dati booleano, come valori di input viene fornito True o False.
Esempio: Per prima cosa sono state inizializzate due variabili booleane con un valore e poi su di esse viene eseguita l'operazione XOR utilizzando l'operatore caret.
Pitone # First boolean a = True # Second boolean b = False # Performing the xor operation xor = a ^ b print(xor)>
Produzione:
True>
Complessità temporale: O(1)
Complessità spaziale: O(1)
nick pulos fulmine nero
XOR sulla stringa
Poiché le stringhe sono una sequenza, il tipo di dati deve essere normalizzato affinché l'operazione possa essere eseguita su di esse. Pertanto, le stringhe verrebbero convertite in bool e quindi su di esse potrebbe essere eseguita l'operazione xor. Ma a causa di ciò, il risultato dell'operazione sarebbe binario, cioè darebbe come risultato uno dei due VERO O Falso (a differenza di xor degli interi in cui viene prodotto il valore risultante).
Esempio: Innanzitutto vengono definite due stringhe. Uno di questi è una stringa vuota. Quindi le stringhe vengono convertite nel tipo di dati booleano e su di esse viene eseguita l'operazione xor. Viene visualizzato il risultato.
Pitone # First string a = 'Hello World!' # Second string b = '' # Performing the xor operation xor = bool(a) ^ bool(b) print(xor)>
Produzione:
True>
Complessità temporale: O(n)
Complessità spaziale: O(n), dove n è la lunghezza della stringa
XOR di due variabili utilizzando il modulo operatore
Python ha un modulo operatore, che fornisce una serie di funzioni predefinite per operatori aritmetici, logici, bit a bit e di confronto. Fornisce inoltre la funzione XOR dell'operatore bit a bit che può essere utilizzata per ottenere lo XOR di due variabili.
Esempio: Per prima cosa importa il modulo operatore. Quindi due variabili vengono inizializzate con un valore e quindi viene eseguita l'operazione XOR su di esse utilizzando la funzione xor dei moduli operatore.
Pitone # 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)>
Produzione:
elaborazione dell'hacking
17>
Complessità temporale: O(1)
Complessità spaziale: O(1)
Scambio di due numeri interi utilizzando XOR senza variabile temporanea
L'operazione XOR bit a bit in Python può essere utilizzata anche per scambiare due numeri interi senza utilizzare la variabile temporanea. Vediamo come funziona.
a = a ^ b b = a ^ b a = a ^ b>
Lo scambio richiede tre espressioni con l'operazione XOR.
- XOR i due numeri interi 'UN' E ' B' e memorizzarne il risultato nell'intero 'UN' si.
- Ora XOR il valore aggiornato di 'UN' con 'B'. Ciò risulterà nel valore originale di 'UN' , che ora è memorizzato in 'B' .
- Infine, XOR 'UN' con il valore ora aggiornato di 'B' nel passaggio precedente. Il risultato sarà il valore originale di 'B' . che ora è memorizzato 'UN' .
Esempio: Innanzitutto vengono inizializzati due numeri interi. Quindi, utilizzando i tre passaggi precedenti, lo scambio di due numeri interi viene eseguito utilizzando l'operatore XOR. Infine, stampa gli interi scambiati.
Pitone # 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)>
Produzione:
Before Swapping: a = 10 b = 27 After Swapping: a = 27 b = 10>