Причина, по которой вы получаете неожиданный вывод, заключается в том, что когда вы XOR некоторых символов, результат не будет печататься.
Например, рассмотрим XORing 'W' и 'A':
Char code
W 0101-0111
A 0100-0001
---------
0001-0110
Результирующий код символа 00010110 - это «SYN» (синхронный режим ожидания), который НЕ является печатаемым символом и приведет к выводу либо пустого символа, либо символа коробки (не уверен, какой именно).
Другой пример:
Char code
X 0101 1000
a 0110 0001
---------
9 0011 1001
В этом случае XORing X
и a
приводит к 9
.