logo

XOR dwóch zmiennych w Pythonie

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:



ABA⊕B
110
011
101
000

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 xamppa
Pyton
# 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.

  1. XOR dwie liczby całkowite 'A' I ' B' i zapisz jego wynik w liczbie całkowitej 'A' samo.
  2. Teraz XOR zaktualizowaną wartość 'A' z 'B'. Spowoduje to uzyskanie oryginalnej wartości 'A' , który jest teraz przechowywany w 'B' .
  3. 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>