XOR tai exclusive on Boolen logiikkaoperaatio, jota käytetään laajalti kryptografiassa ja generoimassa pariteettibittejä virheentarkistusta ja vikasietoisuutta varten. Toiminto ottaa kaksi sisääntuloa ja tuottaa yhden lähdön. Operaatio on perinteisesti bittikohtaista, mutta se voidaan suorittaa myös loogisesti. Tämä artikkeli opettaa sinulle, kuinka saada kahden muuttujan looginen XOR-arvo sisään Python .
Kahden luvun XOR
Kuten XOR on a bittikohtainen operaattori , se vertaa molempien kokonaislukujen bittejä bitti kerrallaan muutettuaan ne binääriluvuiksi. XOR:n (binääri) totuustaulukko on esitetty alla:
| A | B | A⊕B |
|---|---|---|
| 1 | 1 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 0 | 0 | 0 |
XOR-toiminnan kaava on:
XOR(A, B) = ( A .overline{B}) + (B.overline{A})>Kahden kokonaisluvun XOR:n suorittaminen on Pythonissa triviaalia, sillä kieli tarjoaa varsinkin tähän tarkoitukseen operaattorin, nimittäin caretin ^. Mutta tämä toiminto voidaan suorittaa myös käyttämällä Pythonin operaattorimoduulia.
Huomautus: Muutama asia, joka tulee muistaa suoritettaessa xor-toimintoa:
lateksi fontti
- XOR:n tulee olla vain homogeenisten elementtien välillä, eli niiden tietotyypin tulee olla sama.
- Merkkijonon bool johtaa Totta jos merkkijono ei ole tyhjä ja Väärä jos merkkijono on tyhjä.
Katsotaanpa nyt XOR-toimintoa Pythonin eri tietotyypeissä.
XOR kokonaislukuina
Kokonaisluvut muunnetaan ensin binääriluvuiksi ja sitten kutakin bittiä verrataan toisiinsa. Lopullinen vastaus muunnetaan sitten takaisin alkuperäiseen kokonaislukumuotoon. Seuraava koodi osoittaa caretin käytön kahden kokonaislukumuuttujan XOR:n suorittamiseen.
Esimerkki: Ensin alustettiin kaksi muuttujaa, jotka sisälsivät 10 ja 27 kokonaislukuarvoa. Sitten kahden muuttujan xor saadaan käyttämällä caret-operaattoria. Toimenpiteen tulos näytetään.
Python
# First integer a = 10 # Second integer b = 27 # Performing the xor and storing the result in separate variable xor = a ^ b print(xor)>
Lähtö:
17>
Aika monimutkaisuus: O(1)
kajal aggarwal
Avaruuden monimutkaisuus: O(1)
XOR Booleanilla
Kahden loogisen muuttujan XOR on melko yksinkertainen. XOR-operaation tulos on joko 0 tai 1, mikä edustaa True- tai Flase-arvoa vastaavasti loogisessa muodossa. Siten loogisen XOR:n saamiseksi loogisen tietotyypin syöttöarvoiksi annetaan joko True tai False.
Esimerkki: Aluksi kaksi loogista muuttujaa alustettiin arvolla ja sitten niille suoritetaan XOR-operaatio caret-operaattorilla.
Python # First boolean a = True # Second boolean b = False # Performing the xor operation xor = a ^ b print(xor)>
Lähtö:
True>
Aika monimutkaisuus: O(1)
Avaruuden monimutkaisuus: O(1)
XOR Stringillä
Koska merkkijonot ovat sekvenssi, tietotyyppi on normalisoitava, jotta niille voidaan suorittaa toiminto. Siksi merkkijonot muunnetaan booliksi, ja sitten niille voitaisiin suorittaa xor-toiminto. Mutta tästä johtuen operaation tulos olisi binäärinen, eli se johtaisi jompaankumpaan Totta tai Väärä (toisin kuin kokonaislukujen xor, jossa tuloksena oleva arvo tuotetaan).
Esimerkki: Ensin määritellään kaksi merkkijonoa. Yksi niistä on tyhjä merkkijono. Sitten merkkijonot muunnetaan loogisiksi tietotyypeiksi ja niille suoritetaan xor-toiminto. Tulos näytetään.
java merkkijonomuotoPython
# First string a = 'Hello World!' # Second string b = '' # Performing the xor operation xor = bool(a) ^ bool(b) print(xor)>
Lähtö:
True>
Aika monimutkaisuus: O(n)
Avaruuden kompleksisuus: O(n), missä n on merkkijonon pituus
Kahden muuttujan XOR operaattorimoduulin avulla
Pythonissa on operaattorimoduuli, joka tarjoaa joukon ennalta määritettyjä toimintoja aritmeettisille, loogisille, bittikohtaisille ja vertailuoperaattoreille. Se tarjoaa myös bittikohtaisen operaattorin XOR-funktion, jota voidaan käyttää kahden muuttujan XOR-arvon saamiseksi.
Esimerkki: Tuo ensin käyttömoduuli. Sitten kaksi muuttujaa alustetaan arvolla ja sitten niille suoritetaan XOR-toiminto käyttämällä operaattorimoduulien xor-toimintoa.
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)>
Lähtö:
17>
Aika monimutkaisuus: O(1)
Avaruuden monimutkaisuus: O(1)
Kahden kokonaisluvun vaihtaminen XOR:lla ilman väliaikaista muuttujaa
Pythonin bittikohtaista XOR-toimintoa voidaan käyttää myös kahden kokonaisluvun vaihtamiseen ilman väliaikaista muuttujaa. Katsotaanpa, miten tämä toimii.
a = a ^ b b = a ^ b a = a ^ b>
Vaihtaminen vaatii kolme lauseketta XOR-operaatiolla.
joka perusti koulun
- XOR kaksi kokonaislukua 'a' ja ' b' ja tallentaa sen tuloksen kokonaisluvussa 'a' itse.
- Nyt XOR päivitetty arvo 'a' kanssa 'b'. Tämä johtaa alkuperäiseen arvoon 'a' , joka on nyt tallennettu 'b' .
- Lopuksi XOR 'a' nyt päivitetyllä arvolla 'b' edellisessä vaiheessa. Tuloksena on alkuperäinen arvo 'b' . joka on nyt tallennettu 'a' .
Esimerkki: Ensin alustetaan kaksi kokonaislukua. Sitten käyttämällä yllä olevia kolmea vaihetta, kahden kokonaisluvun vaihto suoritetaan käyttämällä XOR caret -operaattoria. Tulosta lopuksi vaihdetut kokonaisluvut.
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)> Lähtö:
Before Swapping: a = 10 b = 27 After Swapping: a = 27 b = 10>