📚 Study/Java

JAVA :: Test025_비트 단위 연산자(xor)

bono-hye 2023. 9. 7. 22:48

- xor 연산 : 두 변수에 담겨 있는 내용(값)바꿈 → 스왑(swap)

 

public class Test024
{
	public static void main(String[] args)
	{
		// 주요 변수 선언 및 초기화
		int x=20, y=23;
		//int temp;				//-- 임시 저장 변수(빈 컵)

		// 담겨있는 내용물 확인
		System.out.printf("x → %d, y → %d\n", x, y);


		// 연산 및 처리
		/*
		temp = x;
		x = y;
		y = temp;
		*/

		
		/*
		x=x^y;
		y=y^x;
		x=x^y
		*/

		y=y^x;
		x=x^y;
		y=y^x;


		// 결과 출력 → 담겨있는 내용물 확인
		System.out.printf("x → %d, y → %d\n", x, y);
	}
}

[Test025 실행 결과]

x → 20, y → 23
x → 23, y → 20
계속하려면 아무 키나 누르십시오 . . .

[두 변수에 담겨 있는 내용이 바뀌는 과정]

/*
x=x^y;	→ x:20		y:23
		→ x = 20 ^ 23
		  
		  00010100 → 20
		^ 00010111 → 23
		-----------------
		  00000011 → 3
		
		→ x = 3;

y=y^x;	→ y : 23	x:3
		→ y = 23 ^ 3

		  00010111 → 23
		^ 00000011 → 3
		-----------------
		  00010100 → 20

		→ y =20;

x=x^y;	→ x : 3	y:20
		→ x = 3 ^ 20

		  00000011 → 3
		^ 00010100 → 20
		-----------------
		  00010111 → 23

		→ x =23;

*/