Почему 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);
}