푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 배우기
C# 배우기

다른 카테고리

C#의 이진 XOR 연산자 이해하기

Tim Corey
5분 54초

이진 연산은 프로그래밍에서 매우 중요한 부분이며, 특히 저수준 최적화 및 비트 연산을 다룰 때 더욱 그렇습니다. 그러한 연산 중 하나가 배타적 논리합(XOR) 연산자입니다. 이 글에서는 Tim Corey의 동영상 " 10분 안에 배우는 이진 XOR 연산자"를 따라가며 C#의 이진 XOR 연산자를 살펴보겠습니다.

팀의 영상은 XOR 연산, 그 구문 및 실제 응용에 대한 훌륭한 설명입니다. 아래에서는 그의 설명과 예시를 분석하고, 쉽게 참조할 수 있도록 특정 시점을 표시하겠습니다.

XOR 소개

Tim은 영상 시작 부분에서 이 영상이 C#에서 이진법 이해하기 시리즈의 9번째 강의라고 언급합니다. 그는 이번 강의에서 배타적 논리합(XOR) 연산자의 작동 방식과 다양한 상황에서 어떻게 유용하게 사용될 수 있는지 설명하며 강의의 배경을 제시합니다.

XOR 연산자 구문 및 기본 설명

Tim은 1과 2라는 두 값을 입력하고 참조용으로 콘솔에 출력합니다. 그는 표준 8비트 이진 표현에 초점을 맞추기 위해 32비트 표현을 제거합니다.

0:31에 그는 C#에서 XOR 연산이 캐럿 기호(^)로 표현된다고 설명합니다. 그는 시청자들에게 다음과 같이 상기시킵니다.

  • AND 연산자(&)는 두 비트 모두 1이어야 1을 반환합니다.
  • OR 연산자(|)는 비트 중 하나라도 1이면 1을 반환합니다.
  • XOR 연산자(^)는 두 비트 중 하나만 1일 경우에만 1을 반환합니다.

팀은 각 비트 비교에 대한 규칙을 더 자세히 설명합니다.

  • 1 XOR 0 = 1
  • 0 XOR 1 = 1
  • 1 XOR 1 = 0
  • 0 XOR 0 = 0

즉, XOR 연산은 두 값 사이의 차이를 감지하는 역할을 합니다.

C# 코드로 XOR 연산 시연하기

팀은 두 값을 XOR 한 결과를 보유하는 uint 변수를 정의하여 실용적인 예제로 이동합니다:

// Define two sample values
uint val1 = 0b0001;  // 1 in decimal
uint val2 = 0b0010;  // 2 in decimal

// Perform XOR operation between val1 and val2
uint result = val1 ^ val2;

// Print the resultant binary value of XOR operation
Console.WriteLine(Convert.ToString(result, toBase: 2).PadLeft(8, '0'));
// Define two sample values
uint val1 = 0b0001;  // 1 in decimal
uint val2 = 0b0010;  // 2 in decimal

// Perform XOR operation between val1 and val2
uint result = val1 ^ val2;

// Print the resultant binary value of XOR operation
Console.WriteLine(Convert.ToString(result, toBase: 2).PadLeft(8, '0'));

그는 결과를 콘솔에 출력하고 출력 내용을 기록합니다.

0000 0011

이 출력 결과는 XOR 연산이 원래 값 중 하나만 1인 경우의 비트만 보존하고, 둘 다 1인 경우는 보존하지 않는다는 것을 보여줍니다.

값 비교를 위한 XOR 연산 사용

팀은 이제 XOR 연산의 실용적인 활용법 한 가지를 보여줍니다. 바로 두 값이 동일한지 확인하는 것입니다.

3:00에 그는 val1val2 이 동일하도록 값을 수정합니다:

// Initialize val1 and val2 to the same value
uint val1 = 0b10011001;
uint val2 = 0b10011001;

// Perform XOR operation to check for identical values
uint result = val1 ^ val2;

// Output will be zero if both values are identical
Console.WriteLine(Convert.ToString(result, toBase: 2).PadLeft(8, '0'));
// Initialize val1 and val2 to the same value
uint val1 = 0b10011001;
uint val2 = 0b10011001;

// Perform XOR operation to check for identical values
uint result = val1 ^ val2;

// Output will be zero if both values are identical
Console.WriteLine(Convert.ToString(result, toBase: 2).PadLeft(8, '0'));

그가 XOR 연산을 수행하면 결과는 다음과 같습니다.

0000 0000

팀은 XOR 결과가 0이면 두 값이 동일하다는 의미라고 설명합니다. 따라서 XOR 연산은 두 숫자가 같은지 비교하는 빠른 방법입니다.

차이점 식별을 위한 XOR 연산

4:00에 팀은 val1val2 이 약간의 차이가 있는 또 다른 사례를 보여줍니다. 이번에는 XOR 연산 결과가 0이 아니므로 두 값 사이에 차이가 있음을 나타냅니다.

이 접근 방식은 XOR 연산을 통해 단 한 단계만으로 차이점을 명확히 구분할 수 있기 때문에 대규모 이진 값을 효율적으로 비교할 때 유용합니다.

임시 변수 없이 두 변수를 교환하는 XOR 연산

팀은 임시 변수를 사용하지 않고 두 숫자를 바꾸는 고전적인 프로그래밍 기법을 소개합니다.

5:40에 그는 시청자들에게 추가 변수를 선언하지 않고 val1val2 을 교환하라고 도전합니다. 이 해결책은 XOR 연산을 세 번 사용합니다.

// Original values
uint val1 = 0b0010; // 2 in decimal
uint val2 = 0b0100; // 4 in decimal

// Swap the values using XOR
val1 = val1 ^ val2;
val2 = val1 ^ val2;
val1 = val1 ^ val2;

// After swap: val1 = 4, val2 = 2
Console.WriteLine($"val1: {val1}, val2: {val2}");
// Original values
uint val1 = 0b0010; // 2 in decimal
uint val2 = 0b0100; // 4 in decimal

// Swap the values using XOR
val1 = val1 ^ val2;
val2 = val1 ^ val2;
val1 = val1 ^ val2;

// After swap: val1 = 4, val2 = 2
Console.WriteLine($"val1: {val1}, val2: {val2}");

그는 그 과정을 단계별로 설명합니다.

  1. val1 은(는) val1 ^ val2 을 저장하고 있어 이제 두 값 모두의 혼합 값을 가지고 있습니다.
  2. val2 은(는) val1 와 다시 XOR 되어 원래의 val1 값만 남습니다.
  3. val1 은 다시 XOR 되어 원래의 val2 값만 남습니다.

7:30에 팀은 교환된 값을 인쇄하고 val1val2 가 성공적으로 값을 교환했음을 확인합니다.

이진 표현에서 XOR 이해하기

이해를 돕기 위해 Tim은 스와핑 연산의 이진 버전을 실행하여 각 XOR 단계가 비트에 어떤 영향을 미치는지 보여줍니다. 그는 각 비트가 필요할 때만 반전되므로 XOR 연산이 값을 교환하는 효율적인 방법이라고 강조합니다.

결론

팀은 핵심 요점을 다시 한번 강조하며 마무리합니다.

  • XOR 연산은 정확히 하나의 비트가 1일 때만 1을 반환합니다.
  • 값을 효율적으로 비교하는 데 사용할 수 있습니다.
  • 이 기능은 세 번째 변수 없이 두 값을 교환하는 데 도움이 되므로 코딩 문제에서 유용한 팁입니다.

그는 시청자들이 XOR 연산을 직접 실험해보고 실제 문제에 적용하여 더 깊이 이해하도록 권장합니다.

마지막으로

팀 코리의 영상은 C#에서 XOR 연산에 대한 훌륭하고 간결한 설명을 제공합니다. 그는 단계별 예시를 통해 연산자가 비교, 차이점 비교, 심지어 값 교환에도 유용하게 사용될 수 있음을 보여줍니다.

이진 연산이나 비트 연산에 관심이 있다면, C# 이진 조작에 대한 이해를 높이는 데 꼭 필요한 영상 입니다.

Hero Worlddot related to C#의 이진 XOR 연산자 이해하기
Hero Affiliate related to C#의 이진 XOR 연산자 이해하기

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해