이변량 교환을 교묘하게 실현하다

732 단어 변량
오늘 C 언어의 비트 연산을 볼 때 다음과 같이 a, b 두 값을 교환하는 방법을 보았다.
                    a = a^b;
                    b = a^b;
                    a = a^b;
나중에 생각해 보니 정말 신기했다!사실 우리는 먼저 임의의 x에 대한 만족을 안다.
                               x^x == 0;
                               x^0 == x;
그러면 위의 식은 사실상 위와 같은 규칙을 이용했다. 먼저 a^b의 값을 a로 저장한 다음에 b=a^b=(a^b)^b=a^b=a^b=a^(b^b)=a^0=a로 성공적으로 b=a를 실현했다.이어서 a=a^b=(a^b)^b(첫 번째 b는 원래의 b이고 두 번째 b는 이미 a의 값이다. 앞에서 이미 교환이 이루어졌기 때문이다)=(a^b)^a=a^a^b=0^b=b, 이렇게 해서 a=b를 실현했다.그래서 a, b 두 값의 교환을 성공적으로 실현했다.
//          

#include "stdio.h"



int main()

{

	int a=12,b=34;

	a=a^b;

	b=a^b;

	a=a^b;

	printf("a=%d
b=%d
",a,b); return 0; }

좋은 웹페이지 즐겨찾기