Предположим, вам дано n различных чисел, которые могут иметь или не иметь промежутка между ними. Если бы вы были в XOR всех чисел, то результат, который вы получите, было бы гарантировано, что не будет ни одного из этих n чисел?Является ли XOR из n различных чисел всегда числом вне множества n чисел?
ответ
No.
Предполагая, что вы имели в виду, что первое число в массиве будет XOR'd со 2-го, и результат, который будет XOR'd с 3-го и т.д., то рассмотрим ниже контрапункт :
[1,2,6,4]
Использование двоичного XOR, смотри ниже битовых представлений:
100 исключающее ИЛИ 010 = 110
110 исключающее ИЛИ 01 1 = 101
101 исключающее ИЛИ 001 = 100
исключающее всех чисел в массиве равно первому числу в массиве.
0b00 XOR 0b01 XOR 0b10 XOR 0b11 == 0b00
Число 0 имеет довольно интересную черту в этом контексте:
a xor 0 = a, a != 0
Это уже половина ответа на вопрос:
XOR-инга содержание любого множества {a, 0}, a != 0
в результате получится a
. Таким образом, ответ отрицательный.
Это может быть расширена еще дальше:
Для любого набора чисел, где N
подмножество M
со свойствами M = N \ {a}
и xor(M) = 0
существует, xor(N) = a
имеет место. M
обладает свойством, что число 1bits на любой битовой позиции будет еще:
N = {100, 010, 001, 011}
a = 100
M = {010, 001, 011}
M: 0 1 0
0 0 1
0 1 1
count: 0 2 2
xor(N) = 100
порядок и реализация не имеет значения из-за коммутативности и ассоциативности исключающего-операции. Но хороший пример. – Paul