본문 바로가기
하지의 코딩일지/JAVA TEST

XOR를 이용한 이진수 뒤집기

by 하지마지 2023. 7. 30.
728x90

두 정수 A와 B를 이진수로 표현했을 때, A를 B로 바꾸기 위해 뒤집어야 하는 비트의 개수를 구하는 문제를 해결하기 위해서는 XOR 연산을 활용할 수 있습니다.

XOR 연산은 두 비트가 다를 때 1을 반환하고, 같을 때 0을 반환합니다. 두 정수 A와 B를 XOR 연산한 결과를 이진수로 표현하면, A와 B의 이진수 표현에서 서로 다른 비트들이 1로 표시됩니다. 그리고 이 1의 개수가 A를 B로 바꾸기 위해 뒤집어야 하는 비트의 개수가 됩니다

 

class Solution {
    public int solution(int A, int B) {
        int xorResult = A ^ B;
        int count = 0;

        // XOR 결과에서 1의 개수를 세기
        while (xorResult > 0) {
            if ((xorResult & 1) == 1) {
                count++;
            }
            xorResult >>= 1;
        }

        return count;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        int A = 29; // 이진수: 11101
        int B = 15; // 이진수: 01111
        int result = solution.solution(A, B);
        System.out.println(result); // 출력 결과: 2 (뒤집어야 하는 비트 개수)
    }
}
728x90