XOR nebo exkluzivní je logická operace typu Boolean široce používaná v kryptografii a generování paritních bitů pro kontrolu chyb a odolnost proti chybám. Operace zahrnuje dva vstupy a vytváří jeden výstup. Operace je bitová tradičně, ale mohla by být provedena i logicky. Tento článek vás naučí, jak získat logický XOR dvou proměnných Krajta .
XOR dvou čísel
Protože XOR je a bitový operátor , bude porovnávat bity obou celých čísel bit po bitu po jejich převodu na binární čísla. Pravdivostní tabulka pro XOR (binární) je uvedena níže:
A | B | A⊕B |
---|---|---|
1 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
0 | 0 | 0 |
Vzorec pro operaci XOR je:
XOR(A, B) = ( A .overline{B}) + (B.overline{A})>
Provádění XOR dvou celých čísel je v Pythonu triviální, protože jazyk nabízí operátor, speciálně pro tento účel, konkrétně stříšku ^. Ale této operace lze také dosáhnout použitím operátorského modulu v Pythonu.
Poznámka: Při provádění operace xor je třeba pamatovat na několik věcí:
Rajinikanth
- XOR by měl být pouze mezi homogenními prvky, tj. jejich datový typ by měl být stejný.
- Bool řetězce bude mít za následek Skutečný pokud řetězec není prázdný a Nepravdivé pokud je řetězec prázdný.
Nyní se podívejme na operaci XOR na různých datových typech v Pythonu.
XOR na celá čísla
Celá čísla jsou nejprve převedena na binární čísla a poté je každý bit porovnán mezi sebou. Konečná odpověď je pak opět převedena zpět do původního celočíselného tvaru. Následující kód ukazuje použití stříšky pro provádění XOR dvou celočíselných proměnných.
Příklad: Nejprve byly inicializovány dvě proměnné obsahující 10 a 27 celočíselných hodnot. Potom se pomocí operátoru stříšky získá xor dvou proměnných. Zobrazí se výsledek operace.
javascriptový víceřádkový řetězecKrajta
# First integer a = 10 # Second integer b = 27 # Performing the xor and storing the result in separate variable xor = a ^ b print(xor)>
Výstup:
17>
Časová složitost: O(1)
Prostorová složitost: O(1)
XOR na Boolean
XOR dvou booleovských proměnných je docela jednoduchý. Výstup operace XOR je buď 0 nebo 1, což představuje True nebo Flase v booleovském formátu. Pro získání logického XOR booleovského datového typu je tedy jako vstupní hodnota poskytnuta buď True nebo False.
Příklad: Nejprve byly dvě booleovské proměnné inicializovány hodnotou a poté je s nimi provedena operace XOR pomocí operátoru stříšky.
Krajta # First boolean a = True # Second boolean b = False # Performing the xor operation xor = a ^ b print(xor)>
Výstup:
True>
Časová složitost: O(1)
Prostorová složitost: O(1)
npm cache čistá
XOR na řetězci
Vzhledem k tomu, že řetězce jsou sekvence, datový typ musí být normalizován, aby na nich mohla být provedena operace. Řetězce by tedy byly převedeny na bool a poté by na nich mohla být provedena operace xor. Ale díky tomu by byl výsledek operace binární, to znamená, že by to mělo za následek buď Skutečný nebo Nepravdivé (na rozdíl od xor celých čísel, kde se vytváří výsledná hodnota).
Příklad: Nejprve jsou definovány dva řetězce. Jedním z nich je prázdný řetězec. Poté jsou řetězce převedeny na datový typ boolean a je na nich provedena operace xor. Zobrazí se výsledek.
Krajta # First string a = 'Hello World!' # Second string b = '' # Performing the xor operation xor = bool(a) ^ bool(b) print(xor)>
Výstup:
True>
Časová složitost: O(n)
Prostorová složitost: O(n), kde n je délka řetězce
XOR dvou proměnných pomocí operátorského modulu
Python má operátorský modul, který poskytuje sadu předdefinovaných funkcí pro aritmetické, logické, bitové a porovnávací operátory. Poskytuje také funkci XOR bitového operátoru, kterou lze použít k získání XOR dvou proměnných.
Příklad: Nejprve importujte operátorský modul. Poté jsou dvě proměnné inicializovány hodnotou a poté je s nimi provedena operace XOR pomocí funkce xor operátorského modulu.
Krajta # 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)>
Výstup:
java hashmap
17>
Časová složitost: O(1)
Prostorová složitost: O(1)
Záměna dvou celých čísel pomocí XOR bez dočasné proměnné
Bitovou operaci XOR v Pythonu lze také použít k záměně dvou celých čísel bez použití dočasné proměnné. Podívejme se, jak to funguje.
a = a ^ b b = a ^ b a = a ^ b>
Záměna vyžaduje tři výrazy s operací XOR.
- XOR dvě celá čísla 'A' a ' b' a uložit jeho výsledek v celém čísle 'A' sám.
- Nyní XOR aktualizovanou hodnotu 'A' s „b“. Výsledkem bude původní hodnota 'A' , který je nyní uložen v 'b' .
- Konečně XOR 'A' s nyní aktualizovanou hodnotou 'b' v předchozím kroku. Výsledkem bude původní hodnota 'b' . který je nyní uložen v 'A' .
Příklad: Nejprve se inicializují dvě celá čísla. Poté pomocí výše uvedených tří kroků se provede záměna dvou celých čísel pomocí operátoru stříšky XOR. Nakonec vytiskněte prohozená celá čísla.
Krajta # 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)>
Výstup:
Before Swapping: a = 10 b = 27 After Swapping: a = 27 b = 10>