XOR jeb ekskluzīvais ir Būla loģikas operācija, ko plaši izmanto kriptogrāfijā un ģenerē paritātes bitus kļūdu pārbaudei un kļūdu pielaidei. Darbība veic divas ievades un rada vienu izvadi. Operācija ir tradicionāli bitveidīga, taču to var veikt arī loģiski. Šis raksts jums iemācīs, kā iegūt divu mainīgo loģisko XOR Python .
Divu skaitļu XOR
Tā kā XOR ir a bitu operators , tas salīdzinās abu veselo skaitļu bitus pēc bitiem pēc to konvertēšanas bināros skaitļos. XOR (binārā) patiesības tabula ir parādīta zemāk:
A | B | A⊕B |
---|---|---|
1 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
0 | 0 | 0 |
XOR darbības formula ir šāda:
XOR(A, B) = ( A .overline{B}) + (B.overline{A})>
Divu veselu skaitļu XOR veikšana Python ir triviāla, jo valoda piedāvā operatoru, īpaši šim nolūkam, proti, caret ^. Bet šo darbību var veikt arī, izmantojot Python operatora moduli.
Piezīme: Dažas lietas, kas jāatceras, veicot xor darbību:
java virknes garums
- XOR jābūt tikai starp viendabīgiem elementiem, t.i., to datu tipam jābūt vienādam.
- Rezultātā tiks parādīta virknes būtība Taisnība ja virkne nav tukša un Nepatiesi ja virkne ir tukša.
Tagad apskatīsim XOR darbību dažādos Python datu tipos.
XOR uz veseliem skaitļiem
Veselus skaitļus vispirms pārvērš bināros skaitļos un pēc tam katru bitu salīdzina savā starpā. Pēc tam galīgā atbilde atkal tiek pārveidota sākotnējā veselā skaitļa formā. Šis kods parāda caret izmantošanu divu veselu skaitļu mainīgo XOR veikšanai.
Piemērs: Vispirms tika inicializēti divi mainīgie, kas satur 10 un 27 veselas vērtības. Pēc tam divu mainīgo lielumu xor iegūst, izmantojot caret operatoru. Tiek parādīts operācijas rezultāts.
Python
# First integer a = 10 # Second integer b = 27 # Performing the xor and storing the result in separate variable xor = a ^ b print(xor)>
Izvade:
17>
Laika sarežģītība: O(1)
tīkla slānis datortīklos
Telpas sarežģītība: O(1)
XOR uz Būla
Divu Būla mainīgo XOR ir diezgan vienkāršs. XOR operācijas izvade ir 0 vai 1, kas attiecīgi apzīmē True vai Flase Būla formātā. Tādējādi, lai iegūtu Būla datu tipa loģisko XOR, kā ievades vērtības tiek norādītas True vai False.
Piemērs: Vispirms divi Būla mainīgie tika inicializēti ar vērtību un pēc tam ar tiem tiek veikta XOR darbība, izmantojot caret operatoru.
Python # First boolean a = True # Second boolean b = False # Performing the xor operation xor = a ^ b print(xor)>
Izvade:
True>
Laika sarežģītība: O(1)
Telpas sarežģītība: O(1)
XOR uz virknes
Tā kā virknes ir secība, datu tips ir jānormalizē, lai ar tām varētu veikt darbību. Tāpēc virknes tiktu pārveidotas par bool, un pēc tam ar tām varētu veikt xor darbību. Bet tādēļ operācijas rezultāts būtu binārs, t.i., rezultātā būtu vai nu Taisnība vai Nepatiesi (atšķirībā no veselu skaitļu xor, kur tiek iegūta iegūtā vērtība).
Piemērs: Vispirms tiek definētas divas virknes. Viens no tiem ir tukša virkne. Pēc tam virknes tiek pārveidotas par Būla datu tipu, un ar tām tiek veikta xor darbība. Tiek parādīts rezultāts.
slēptās lietotnes šajā ierīcēPython
# First string a = 'Hello World!' # Second string b = '' # Performing the xor operation xor = bool(a) ^ bool(b) print(xor)>
Izvade:
True>
Laika sarežģītība: O(n)
Telpas sarežģītība: O(n), kur n ir virknes garums
Divu mainīgo XOR, izmantojot operatora moduli
Python ir operatora modulis, kas nodrošina iepriekš definētu funkciju kopumu aritmētiskajiem, loģiskajiem, bitu un salīdzināšanas operatoriem. Tas nodrošina arī bitu operatora XOR funkciju, ko var izmantot, lai iegūtu divu mainīgo XOR.
Piemērs: Vispirms importējiet operatora moduli. Pēc tam divi mainīgie tiek inicializēti ar vērtību un pēc tam tiem tiek veikta XOR darbība, izmantojot operatora moduļu funkciju xor.
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)>
Izvade:
17>
Laika sarežģītība: O(1)
Telpas sarežģītība: O(1)
Divu veselu skaitļu maiņa, izmantojot XOR bez pagaidu mainīgā
XOR bitu darbību Python var izmantot arī, lai apmainītu divus veselus skaitļus, neizmantojot pagaidu mainīgo. Ļaujiet mums redzēt, kā tas darbojas.
a = a ^ b b = a ^ b a = a ^ b>
Apmaiņai ir nepieciešamas trīs izteiksmes ar XOR operāciju.
alfabēts ar cipariem
- XOR divi veseli skaitļi 'a' un ' b' un saglabājiet tā rezultātu veselā skaitlī 'a' pati par sevi.
- Tagad XOR ir atjaunināta vērtība 'a' ar “b”. Tā rezultātā tiks iegūta sākotnējā vērtība 'a' , kas tagad tiek saglabāts 'b' .
- Visbeidzot, XOR 'a' ar tagad atjaunināto vērtību 'b' iepriekšējā solī. Rezultāts būs sākotnējā vērtība 'b' . kas tagad tiek glabāta 'a' .
Piemērs: Vispirms tiek inicializēti divi veseli skaitļi. Pēc tam, izmantojot iepriekš minētās trīs darbības, divu veselu skaitļu apmaiņu veic, izmantojot XOR caret operatoru. Visbeidzot izdrukājiet apmainītos veselos skaitļus.
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)>
Izvade:
Before Swapping: a = 10 b = 27 After Swapping: a = 27 b = 10>