2017-02-21 44 views
1

Предположим, вам дано n различных чисел, которые могут иметь или не иметь промежутка между ними. Если бы вы были в XOR всех чисел, то результат, который вы получите, было бы гарантировано, что не будет ни одного из этих n чисел?Является ли XOR из n различных чисел всегда числом вне множества n чисел?

ответ

2

No.

Предполагая, что вы имели в виду, что первое число в массиве будет XOR'd со 2-го, и результат, который будет XOR'd с 3-го и т.д., то рассмотрим ниже контрапункт :

[1,2,6,4]

Использование двоичного XOR, смотри ниже битовых представлений:

100 исключающее ИЛИ 010 = 110

110 исключающее ИЛИ 01 1 = 101

101 исключающее ИЛИ 001 = 100

исключающее всех чисел в массиве равно первому числу в массиве.

+3

порядок и реализация не имеет значения из-за коммутативности и ассоциативности исключающего-операции. Но хороший пример. – Paul

1

Число 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