>백엔드 개발 >C++ >세 번째 변수를 사용하지 않고 어떻게 두 변수 값을 바꿀 수 있습니까?

세 번째 변수를 사용하지 않고 어떻게 두 변수 값을 바꿀 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-24 21:21:46909검색

How Can You Swap Two Variable Values Without Using a Third Variable?

세 번째 변수 없이 변수 값 교환: 인터뷰 퍼즐

소프트웨어 개발 인터뷰에서는 일반적인 질문이 제시됩니다. 세 번째 변수를 사용하지 않고 두 변수의 값을 계산합니까? 전통적으로 이는 임시 변수를 자리 표시자로 사용하여 달성됩니다.

세 번째 변수의 필요성을 우회하기 위해 xor 스왑 알고리즘을 사용할 수 있습니다. 이 기술은 두 비트가 동일하면 0을 반환하고 서로 다르면 1을 반환하는 배타적 OR 연산(XOR)을 활용합니다.

XOR 스왑 알고리즘:

void xorSwap(int* x, int* y) {
    if (x != y) { //ensure that memory locations are different
       *x ^= *y;
       *y ^= *x;
       *x ^= *y;
    }
}

이 알고리즘은 다음 단계를 수행하여 작동합니다.

  1. x와 y가 다음을 참조하는지 확인하세요. 메모리 위치가 다릅니다. 그렇다면 계속 진행하세요.
  2. *x와 *y 사이에 XOR 연산을 수행하고 결과를 *x에 저장합니다. 이는 기본적으로 *x의 비트를 뒤집어 *y의 비트와 일치시킵니다.
  3. *x와 *y 사이에 또 ​​다른 XOR 연산을 수행하여 결과를 *y에 저장합니다. 이는 *y의 비트를 뒤집어 원래 *x의 비트와 일치시킵니다.
  4. *x와 *y 사이에 최종 XOR 연산을 수행하고 결과를 *x에 저장합니다. 이렇게 하면 *x의 비트가 원래 값으로 되돌아갑니다.

고려 사항:

  • x와 y가 서로 다른 값을 참조하는지 확인하는 것이 중요합니다. 기억 위치. 그렇지 않으면 XOR을 수행하면 변경 사항이 취소됩니다.
  • 이 알고리즘은 일반적으로 현대 컴파일러가 임시 변수의 필요성을 최적화하므로 실제로 사용되지 않습니다. 그러나 이는 복잡한 연산을 달성하기 위해 비트 연산을 사용하는 개념을 보여줍니다.

위 내용은 세 번째 변수를 사용하지 않고 어떻게 두 변수 값을 바꿀 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.