Почему XOR сумма элементов массива равняется отрицательному числу?

Имеются такие элементы массива:

2147483648
2147483648
2147483648
2147483648
2147483648
2147483648
2147483648
2147483648
2147483649

Их XOR сумма равняется -2147483647. Почему ответ именно такой? Никак не могу понять. Тип данных элементов массива Long Вот код со сложением элементов:

for(int i = 0; i < inputArray.size(); i++) {
    result ^= inputArray.get(i);
}

Я думал, что одинаковые элементы должны обратиться в ноль и ответом являлось бы число 2147483649


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

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

При создании переменной result не было присвоено значение, следовательно, она приняла значение 0 и Вы произвели XOR с ней

Можно изменить так:

long result = inputArray.get(0);
for(int i = 1; i < inputArray.size(); i++) {
    result ^= inputArray.get(i);
}
→ Ссылка