logo

XOR dvoch premenných v Pythone

XOR alebo exkluzívne je operácia booleovskej logiky široko používaná v kryptografii a generovaní paritných bitov na kontrolu chýb a odolnosť voči chybám. Operácia má dva vstupy a vytvára jeden výstup. Operácia je bitová tradične, ale mohla by byť vykonaná aj logicky. Tento článok vás naučí, ako získať logické XOR dvoch premenných Python .

XOR dvoch čísel

Keďže XOR je a bitový operátor , bude porovnávať bity oboch celých čísel bit po bite po ich prevode na binárne čísla. Pravdivostná tabuľka pre XOR (binárne) je uvedená nižšie:



ABA⊕B
110
011
101
000

Vzorec pre operáciu XOR je:

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

Vykonávanie XOR dvoch celých čísel je v Pythone triviálne, pretože jazyk ponúka operátor, špeciálne na tento účel, konkrétne striešku ^. Túto operáciu je však možné dosiahnuť aj použitím operátorského modulu v Pythone.

Poznámka: Pri vykonávaní operácie xor je potrebné pamätať na niekoľko vecí:



np.kde
  • XOR by mal byť iba medzi homogénnymi prvkami, t.j. ich dátový typ by mal byť rovnaký.
  • Výsledkom bude bool reťazca Pravda ak reťazec nie je prázdny a Nepravdivé ak je reťazec prázdny.

Teraz sa pozrime na operáciu XOR na rôznych dátových typoch v Pythone.

XOR na celé čísla

Celé čísla sa najskôr prevedú na binárne čísla a potom sa každý bit navzájom porovnáva. Konečná odpoveď sa potom opäť prevedie späť do pôvodnej celočíselnej formy. Nasledujúci kód demonštruje použitie vsuvky na vykonávanie XOR dvoch celočíselných premenných.

Príklad: Najprv boli inicializované dve premenné obsahujúce 10 a 27 celočíselných hodnôt. Potom sa pomocou operátora vsuvky získa xor dvoch premenných. Zobrazí sa výsledok operácie.



prvý notebook
Python
# First integer a = 10 # Second integer b = 27 # Performing the xor and storing the result in separate variable xor = a ^ b print(xor)>

Výkon:

17>

Časová zložitosť: O(1)

Priestorová zložitosť: O(1)

XOR na Boolean

XOR dvoch booleovských premenných je celkom jednoduché. Výstupom operácie XOR je buď 0 alebo 1, čo predstavuje True alebo Flase v booleovskom formáte. Na získanie logického XOR boolovského dátového typu je teda ako vstupné hodnoty poskytnuté buď True alebo False.

Príklad: Najprv sa inicializovali dve boolovské premenné s hodnotou a potom sa s nimi vykonala operácia XOR pomocou operátora strieška.

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

Výkon:

True>

Časová zložitosť: O(1)

Priestorová zložitosť: O(1)

abeceda očíslovaná

XOR na reťazci

Keďže reťazce sú sekvenciou, typ údajov musí byť normalizovaný, aby sa na nich mohla vykonať operácia. Preto by sa reťazce skonvertovali na bool a potom by sa na nich dala vykonať operácia xor. Ale vďaka tomu by bol výsledok operácie binárny, t.j. vyústil by do jedného Pravda alebo Nepravdivé (na rozdiel od xor celých čísel, kde sa vytvára výsledná hodnota).

Príklad: Najprv sú definované dva reťazce. Jedným z nich je prázdny reťazec. Potom sa reťazce skonvertujú na booleovský dátový typ a vykoná sa na nich operácia xor. Zobrazí sa výsledok.

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

Výkon:

True>

Časová zložitosť: O(n)

Priestorová zložitosť: O(n), kde n je dĺžka reťazca

XOR dvoch premenných pomocou modulu operátora

Python má operátorský modul, ktorý poskytuje sadu preddefinovaných funkcií pre aritmetické, logické, bitové a porovnávacie operátory. Poskytuje tiež funkciu XOR bitového operátora, ktorú možno použiť na získanie XOR dvoch premenných.

Príklad: Najprv importujte operátorský modul. Potom sa dve premenné inicializujú hodnotou a potom sa s nimi vykoná operácia XOR pomocou funkcie xor operátorských modulov.

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)>

Výkon:

previesť reťazec na dátum
17>

Časová zložitosť: O(1)

Priestorová zložitosť: O(1)

Zámena dvoch celých čísel pomocou XOR bez dočasnej premennej

Bitovú operáciu XOR v Pythone možno použiť aj na výmenu dvoch celých čísel bez použitia dočasnej premennej. Pozrime sa, ako to funguje.

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

Zámena vyžaduje tri výrazy s operáciou XOR.

  1. XOR dve celé čísla „a“ a ‘ b' a uložiť jeho výsledok v celom čísle „a“ sám.
  2. Teraz XOR aktualizovanú hodnotu „a“ s „b“. Výsledkom bude pôvodná hodnota „a“ , ktorý je teraz uložený v „b“ .
  3. Nakoniec, XOR „a“ s teraz aktualizovanou hodnotou „b“ v predchádzajúcom kroku. Výsledkom bude pôvodná hodnota „b“ . ktorý je teraz uložený v „a“ .

Príklad: Najprv sa inicializujú dve celé čísla. Potom pomocou vyššie uvedených troch krokov sa vykoná výmena dvoch celých čísel pomocou operátora vsuvky XOR. Nakoniec vytlačte vymenené celé čísla.

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)>

Výkon:

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