XOR arba išskirtinis yra Būlio logikos operacija, plačiai naudojama kriptografijoje ir generuojanti pariteto bitus, skirtus klaidų tikrinimui ir gedimų tolerancijai. Operacija apima du įėjimus ir sukuria vieną išvestį. Operacija yra tradiciškai bitinė, bet gali būti atliekama ir logiškai. Šis straipsnis išmokys jus, kaip gauti dviejų kintamųjų loginį XOR Python .
Dviejų skaičių XOR
Kadangi XOR yra a bitų operatorius , jis lygins abiejų sveikųjų skaičių bitus po bitų, konvertavęs juos į dvejetainius skaičius. XOR (dvejetainė) tiesos lentelė parodyta žemiau:
| A | B | A⊕B |
|---|---|---|
| 1 | 1 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 0 | 0 | 0 |
XOR operacijos formulė yra tokia:
XOR(A, B) = ( A .overline{B}) + (B.overline{A})>Dviejų sveikųjų skaičių XOR atlikimas yra trivialus Python, nes kalba siūlo operatorių, ypač šiam tikslui, būtent caret ^. Tačiau šią operaciją taip pat galima atlikti naudojant Python operatoriaus modulį.
Pastaba: Keletas dalykų, kuriuos reikia atsiminti atliekant xor operaciją:
latekso matrica
- XOR turėtų būti tik tarp vienarūšių elementų, ty jų duomenų tipas turi būti toks pat.
- Stygos bool bus rezultatas Tiesa jei eilutė netuščia ir Netiesa jei eilutė tuščia.
Dabar pažiūrėkime XOR operaciją su skirtingais duomenų tipais Python.
XOR sveikieji skaičiai
Sveikieji skaičiai pirmiausia paverčiami dvejetainiais skaičiais, o tada kiekvienas bitas lyginamas vienas su kitu. Tada galutinis atsakymas vėl konvertuojamas į pradinę sveikųjų skaičių formą. Šis kodas demonstruoja, kaip naudojamas cet, kad būtų galima atlikti dviejų sveikųjų skaičių kintamųjų XOR.
Pavyzdys: Pirmiausia buvo inicijuoti du kintamieji, turintys 10 ir 27 sveikųjų skaičių reikšmes. Tada dviejų kintamųjų xor gaunamas naudojant caret operatorių. Rodomas operacijos rezultatas.
Python
# First integer a = 10 # Second integer b = 27 # Performing the xor and storing the result in separate variable xor = a ^ b print(xor)>
Išvestis:
17>
Laiko sudėtingumas: O(1)
Erdvės sudėtingumas: O(1)
c# kodo pavyzdys
XOR Boolean
Dviejų loginių kintamųjų XOR yra gana paprastas. XOR operacijos išvestis yra 0 arba 1, o tai atitinkamai reiškia True arba Flase loginiu formatu. Taigi, norint gauti loginį loginį loginio loginio duomenų tipo XOR, kaip įvesties reikšmės pateikiamos True arba False.
Pavyzdys: Pirmiausia du loginiai kintamieji buvo inicijuoti su reikšme, o tada jiems atliekama XOR operacija naudojant caret operatorių.
Python # First boolean a = True # Second boolean b = False # Performing the xor operation xor = a ^ b print(xor)>
Išvestis:
True>
Laiko sudėtingumas: O(1)
Erdvės sudėtingumas: O(1)
XOR ant stygos
Kadangi eilutės yra seka, duomenų tipą reikia normalizuoti, kad su jomis būtų atlikta operacija. Todėl eilutės būtų konvertuojamos į bool, o tada joms būtų galima atlikti xor operaciją. Bet dėl to operacijos rezultatas būtų dvejetainis, t.y., būtų bet koks Tiesa arba Netiesa (skirtingai nuo sveikųjų skaičių xor, kai gaunama gaunama vertė).
Pavyzdys: Pirmiausia apibrėžiamos dvi eilutės. Vienas iš jų yra tuščia eilutė. Tada eilutės konvertuojamos į loginį duomenų tipą ir su jomis atliekama xor operacija. Rezultatas rodomas.
Python # First string a = 'Hello World!' # Second string b = '' # Performing the xor operation xor = bool(a) ^ bool(b) print(xor)>
Išvestis:
xd prasmė
True>
Laiko sudėtingumas: O(n)
Erdvės sudėtingumas: O(n), kur n yra eilutės ilgis
Dviejų kintamųjų XOR, naudojant operatoriaus modulį
Python turi operatoriaus modulį, kuriame pateikiamas iš anksto nustatytų aritmetinių, loginių, bitų ir palyginimo operatorių funkcijų rinkinys. Jame taip pat yra bitinio operatoriaus XOR funkcija, kurią galima naudoti norint gauti dviejų kintamųjų XOR.
Pavyzdys: Pirmiausia importuokite operatoriaus modulį. Tada du kintamieji inicijuojami su reikšme ir su jais atliekama XOR operacija naudojant operatoriaus modulių funkciją xor.
char į eilutę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)>
Išvestis:
17>
Laiko sudėtingumas: O(1)
Erdvės sudėtingumas: O(1)
Dviejų sveikųjų skaičių sukeitimas naudojant XOR be laikinojo kintamojo
XOR bitų operacija Python taip pat gali būti naudojama apsikeisti dviem sveikaisiais skaičiais nenaudojant laikinojo kintamojo. Pažiūrėkime, kaip tai veikia.
a = a ^ b b = a ^ b a = a ^ b>
Sukeitimui reikia trijų išraiškų naudojant XOR operaciją.
- XOR du sveikieji skaičiai 'a' ir ' b' ir išsaugokite jo rezultatą sveikajame skaičiuje 'a' pats.
- Dabar XOR atnaujinta reikšmė 'a' su „b“. Dėl to bus gauta pradinė vertė 'a' , kuris dabar saugomas 'b' .
- Galiausiai, XOR 'a' su dabar atnaujinta verte 'b' ankstesniame žingsnyje. Rezultatas bus pradinė vertė 'b' . kuri dabar saugoma 'a' .
Pavyzdys: Pirmiausia inicijuojami du sveikieji skaičiai. Tada, naudojant pirmiau nurodytus tris veiksmus, du sveikieji skaičiai keičiami naudojant XOR caret operatorių. Galiausiai atspausdinkite sukeistus sveikuosius skaičius.
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)> Išvestis:
Before Swapping: a = 10 b = 27 After Swapping: a = 27 b = 10>