XOR lub wyłączność to operacja logiczna Boole'a szeroko stosowana w kryptografii i generująca bity parzystości w celu sprawdzania błędów i odporności na błędy. Operacja pobiera dwa dane wejściowe i generuje jedno wyjście. Operacja jest tradycyjnie bitowa, ale można ją również wykonać logicznie. W tym artykule dowiesz się, jak uzyskać logiczny XOR dwóch zmiennych Pyton .
XOR dwóch liczb
Ponieważ XOR jest a operator bitowy , porówna bity obu liczb całkowitych krok po kroku po przekonwertowaniu ich na liczby binarne. Tabela prawdy dla XOR (binarnego) jest pokazana poniżej:
A | B | A⊕B |
---|---|---|
1 | 1 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
0 | 0 | 0 |
Wzór na operację XOR to:
XOR(A, B) = ( A .overline{B}) + (B.overline{A})>
Wykonanie XOR dwóch liczb całkowitych jest w Pythonie banalne, ponieważ język ten oferuje specjalnie do tego celu operator, a mianowicie daszek ^. Ale tę operację można również wykonać za pomocą modułu operatora w Pythonie.
Notatka: Kilka rzeczy do zapamiętania podczas wykonywania operacji xor:
liczba całkowita na ciąg w Javie
- XOR powinien znajdować się tylko pomiędzy jednorodnymi elementami, tj. ich typ danych powinien być taki sam.
- Wartość bool ciągu spowoduje PRAWDA jeśli ciąg nie jest pusty i FAŁSZ jeśli ciąg znaków jest pusty.
Przyjrzyjmy się teraz operacji XOR na różnych typach danych w Pythonie.
XOR na liczbach całkowitych
Liczby całkowite są najpierw konwertowane na liczby binarne, a następnie każdy bit jest porównywany ze sobą. Ostateczna odpowiedź jest następnie ponownie konwertowana z powrotem do pierwotnej postaci całkowitej. Poniższy kod ilustruje użycie karetki do wykonania XOR dwóch zmiennych całkowitych.
Przykład: Najpierw zainicjowano dwie zmienne zawierające 10 i 27 wartości całkowitych. Następnie xor obu zmiennych oblicza się za pomocą operatora karetki. Wyświetlany jest wynik operacji.
Pyton
# First integer a = 10 # Second integer b = 27 # Performing the xor and storing the result in separate variable xor = a ^ b print(xor)>
Wyjście:
17>
Złożoność czasowa: O(1)
Złożoność przestrzenna: O(1)
XOR na wartości logicznej
XOR dwóch zmiennych logicznych jest dość prosty. Dane wyjściowe operacji XOR to 0 lub 1, co oznacza odpowiednio wartość True lub Flase w formacie boolowskim. Dlatego też, aby uzyskać logiczny XOR typu danych boolowskich, jako wartości wejściowe podaje się wartość True lub False.
Przykład: Najpierw inicjowano wartością dwie zmienne logiczne, a następnie wykonywano na nich operację XOR za pomocą operatora karetki.
alternatywa dla xamppaPyton
# First boolean a = True # Second boolean b = False # Performing the xor operation xor = a ^ b print(xor)>
Wyjście:
True>
Złożoność czasowa: O(1)
Złożoność przestrzenna: O(1)
XOR na Stringu
Ponieważ ciągi znaków są sekwencją, typ danych musi zostać znormalizowany, aby można było na nich wykonać operację. Dlatego ciągi zostaną przekonwertowane na wartość bool, a następnie można będzie na nich wykonać operację xor. Ale z tego powodu wynik operacji byłby binarny, tj. dałby jeden i drugi PRAWDA Lub FAŁSZ (w przeciwieństwie do xor liczb całkowitych, gdzie tworzona jest wartość wynikowa).
Przykład: Najpierw definiowane są dwa ciągi znaków. Jednym z nich jest pusty ciąg znaków. Następnie ciągi znaków są konwertowane na typ danych boolean i wykonywana jest na nich operacja xor. Wynik zostanie wyświetlony.
Pyton # First string a = 'Hello World!' # Second string b = '' # Performing the xor operation xor = bool(a) ^ bool(b) print(xor)>
Wyjście:
True>
Złożoność czasowa: O(n)
Złożoność przestrzenna: O(n), gdzie n jest długością struny
jeśli jeszcze Java
XOR dwóch zmiennych przy użyciu modułu operatora
Python posiada moduł operatora, który udostępnia zestaw predefiniowanych funkcji dla operatorów arytmetycznych, logicznych, bitowych i porównania. Zapewnia także funkcję XOR operatora bitowego, której można użyć do uzyskania XOR dwóch zmiennych.
Przykład: Najpierw zaimportuj moduł operatora. Następnie dwie zmienne inicjowane są wartością, a następnie wykonywana jest na nich operacja XOR przy pomocy funkcji xor modułów operatorskich.
Pyton # 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)>
Wyjście:
17>
Złożoność czasowa: O(1)
Złożoność przestrzenna: O(1)
Zamiana dwóch liczb całkowitych za pomocą XOR bez zmiennej tymczasowej
Operacji bitowej XOR w Pythonie można również użyć do zamiany dwóch liczb całkowitych bez użycia zmiennej tymczasowej. Zobaczmy jak to działa.
ciąg znaków na liczbę całkowitą Java
a = a ^ b b = a ^ b a = a ^ b>
Zamiana wymaga trzech wyrażeń z operacją XOR.
- XOR dwie liczby całkowite 'A' I ' B' i zapisz jego wynik w liczbie całkowitej 'A' samo.
- Teraz XOR zaktualizowaną wartość 'A' z 'B'. Spowoduje to uzyskanie oryginalnej wartości 'A' , który jest teraz przechowywany w 'B' .
- Na koniec XOR 'A' z teraz zaktualizowaną wartością 'B' w poprzednim kroku. Wynikiem będzie pierwotna wartość 'B' . w którym jest teraz przechowywany 'A' .
Przykład: Najpierw inicjowane są dwie liczby całkowite. Następnie, wykonując powyższe trzy kroki, zamiana dwóch liczb całkowitych odbywa się za pomocą operatora karetki XOR. Na koniec wydrukuj zamienione liczby całkowite.
Pyton # 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)>
Wyjście:
Before Swapping: a = 10 b = 27 After Swapping: a = 27 b = 10>