2개의 값을 별도의 추가 변수 없이 교환하는 예제 입니다.
int a = 5;
int b = 7;
a = a ^ b;
b = a ^ b;
a = a ^ b;
System.out.println("a = " + a); // Output: a = 7
System.out.println("b = " + b); // Output: b = 5
위의 예에서는 먼저 a와 b 사이에 XOR 연산을 수행하고 결과를 a에 저장합니다.
그런 다음 다시 a와 b 사이에 XOR 연산을 수행하고 이번에는 결과를 b에 저장합니다.
마지막으로 a와 b 사이에 XOR 연산을 한 번 더 수행하고 그 결과를 a에 저장합니다.
이것은 세 번째 변수를 사용하지 않고 a와 b의 값을 효과적으로 교환합니다.
XOR 연산자란 비트 연산자로, 비트 값이 서로 다르면 1을 리턴하고 같으면 0을 리턴하는 연산자입니다.
위 소스를 풀어보면 아래와 같습니다.
5는 이진수로 101 입니다.
7은 이진수로 111 입니다.
a = a ^ b;
101
111
------
010 => a
b = a ^ b;
010
111
------
101 => b
a = a ^ b;
010
101
------
111 => a
Java 6.리스트에 홀수 여부 확인 (코딩테스트, 면접문제) (0) | 2023.02.15 |
---|---|
Java 5.재귀로 피보나치 수열 출력 (코딩테스트, 면접문제) (0) | 2023.02.15 |
Java 4.소수 확인 (코딩테스트, 면접문제) (0) | 2023.02.15 |
Java 3.문자열에 모음이 있는지 확인 (코딩테스트, 면접문제) (0) | 2023.02.14 |
Java 1.문자열 역 정렬 (코딩테스트, 면접문제) (0) | 2023.02.14 |
댓글 영역