Что происходит в этой строке?: xor ^= A[i];

Что происходит в этой строке?: xor ^= A[i];

Весь код:

public class FindOdd {
    public static int findIt(int[] A) {
        int xor = 0;
        for (int i = 0; i < A.length; i++) {
            xor ^= A[i];
            System.out.println(xor);
        }
        return xor;
    }
}

Ответы (1 шт):

Автор решения: Olmicron

^ — это побитовый оператор исключающее "или"

В данном случае, к xor применяется ^, который копирует бит, если он установлен в одном из операндов, но не в обоих.

Допустим есть:

xor = 0011 1100
A[i] = 0000 1101

Соответственно xor ^= A[i] // xor = 0011 0001

Чтобы визуально проще было:

0011 1100 // xor 
0000 1101 // A[i]
0011 0001 // xor ^= A[i]
→ Ссылка