logo

Python에서 두 변수의 XOR

XOR 또는 배타적은 오류 검사 및 내결함성을 위해 암호화 및 패리티 비트 생성에 널리 사용되는 부울 논리 연산입니다. 이 작업은 두 개의 입력을 받아 단일 출력을 생성합니다. 이 작업은 전통적으로 비트 방식이지만 논리적으로도 수행될 수 있습니다. 이 기사에서는 두 변수의 논리적 XOR을 얻는 방법을 설명합니다. 파이썬 .

두 숫자의 XOR

XOR은 비트 연산자 , 두 정수의 비트를 이진수로 변환한 후 비트 단위로 비교합니다. XOR(이진)에 대한 진리표는 다음과 같습니다.



A⊕B
110
011
101
000

XOR 연산의 공식은 다음과 같습니다.

XOR(A, B) = ( A .overline{B}) + (B.overline{A})>

두 정수의 XOR을 수행하는 것은 파이썬에서 쉬운 일입니다. 언어가 특히 이 목적을 위해 캐럿 ^이라는 연산자를 제공하기 때문입니다. 하지만 이 작업은 Python의 연산자 모듈을 사용하여 수행할 수도 있습니다.

메모: xor 연산을 수행하는 동안 기억해야 할 몇 가지 사항:



살만 칸 나이
  • XOR은 동종 요소 사이에서만 이루어져야 합니다. 즉, 해당 요소의 데이터 유형이 동일해야 합니다.
  • 문자열의 bool 결과는 다음과 같습니다. 진실 문자열이 비어 있지 않은 경우 거짓 문자열이 비어 있는 경우.

이제 Python의 다양한 데이터 유형에 대한 XOR 연산을 살펴보겠습니다.

정수에 대한 XOR

정수는 먼저 이진수로 변환된 다음 각 비트가 서로 비교됩니다. 그런 다음 최종 답은 다시 원래 정수 형식으로 다시 변환됩니다. 다음 코드는 두 정수 변수의 XOR을 수행하기 위해 캐럿을 사용하는 방법을 보여줍니다.

예: 먼저 10개와 27개의 정수 값을 포함하는 두 개의 변수가 초기화되었습니다. 그런 다음 캐럿 연산자를 사용하여 두 변수의 xor를 구합니다. 작업 결과가 표시됩니다.



파이썬
# First integer a = 10 # Second integer b = 27 # Performing the xor and storing the result in separate variable xor = a ^ b print(xor)>

산출:

17>

시간 복잡도: O(1)

이 모니터는 얼마나 큰가요?

공간 복잡도: O(1)

부울의 XOR

두 부울 변수의 XOR은 매우 간단합니다. XOR 연산의 출력은 부울 형식으로 각각 True 또는 Flase를 나타내는 0 또는 1입니다. 따라서 부울 데이터 유형의 논리적 XOR을 얻으려면 True 또는 False가 입력 값으로 제공됩니다.

예: 먼저 두 개의 부울 변수가 값으로 초기화된 다음 캐럿 연산자를 사용하여 XOR 연산이 수행됩니다.

파이썬
# First boolean a = True # Second boolean b = False # Performing the xor operation xor = a ^ b print(xor)>

산출:

True>

시간 복잡도: O(1)

공간 복잡도: O(1)

문자열의 XOR

문자열은 시퀀스이므로 작업을 수행하려면 데이터 유형을 정규화해야 합니다. 따라서 문자열은 bool로 변환된 다음 xor 연산이 수행될 수 있습니다. 그러나 이로 인해 작업 결과는 이진법이 됩니다. 즉, 다음 중 하나의 결과가 발생합니다. 진실 또는 거짓 (결과 값이 생성되는 정수의 xor와는 다릅니다).

예: 먼저 두 개의 문자열이 정의됩니다. 그 중 하나는 빈 문자열입니다. 그런 다음 문자열은 부울 데이터 유형으로 변환되고 xor 연산이 수행됩니다. 결과가 표시됩니다.

선택 정렬 자바
파이썬
# First string a = 'Hello World!' # Second string b = '' # Performing the xor operation xor = bool(a) ^ bool(b) print(xor)>

산출:

True>

시간 복잡도: O(n)

공간 복잡도: O(n), 여기서 n은 문자열 길이입니다.

연산자 모듈을 사용한 두 변수의 XOR

Python에는 산술, 논리, 비트 및 비교 연산자에 대해 미리 정의된 함수 세트를 제공하는 연산자 모듈이 있습니다. 또한 두 변수의 XOR을 얻는 데 사용할 수 있는 비트 연산자의 XOR 기능도 제공합니다.

예: 먼저 연산자 모듈을 가져옵니다. 그런 다음 두 변수가 값으로 초기화된 다음 연산자 모듈의 xor 함수를 사용하여 XOR 연산이 수행됩니다.

파이썬
# 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)>

산출:

17>

시간 복잡도: O(1)

공간 복잡도: O(1)

임시 변수 없이 XOR을 사용하여 두 정수 교환

Python의 XOR 비트 연산을 사용하면 임시 변수를 사용하지 않고 두 정수를 교환할 수도 있습니다. 이것이 어떻게 작동하는지 살펴보겠습니다.

a = a ^ b b = a ^ b a = a ^ b>

스와핑에는 XOR 연산에 세 가지 표현식이 필요합니다.

문자열과 비교
  1. 두 정수를 XOR합니다. 'ㅏ' 그리고 ' 비' 결과를 저장하고 정수로 'ㅏ' 그 자체.
  2. 이제 업데이트된 값을 XOR합니다. 'ㅏ' ~와 함께 '비'. 이렇게 하면 원래 값이 됩니다. 'ㅏ' , 이제 다음 위치에 저장됩니다. '비' .
  3. 마지막으로 XOR 'ㅏ' 이제 업데이트된 값으로 '비' 이전 단계에서. 결과는 원래 값이 됩니다. '비' . 지금은 다음 위치에 저장되어 있습니다. 'ㅏ' .

예: 먼저 두 개의 정수가 초기화됩니다. 그런 다음 위의 세 단계를 사용하여 XOR 캐럿 연산자를 사용하여 두 정수의 교환이 수행됩니다. 마지막으로, 교환된 정수를 인쇄합니다.

파이썬
# 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)>

산출:

Before Swapping: a = 10 b = 27 After Swapping: a = 27 b = 10>