rezident пытаюсь разобрать вашу функцию, объясните на примере первого обращения (matrix=0)... Допустим код равен 11101101
1) Инверсия и сохраняем в press 00010010
в matrix в первое обращение 0
2.1)10010^0=0 // КАК ЭТО
2.2)~0=1 // Устранило
2.3)1&0=0 // ДРЕБЕЗГ
2.4) Key=0
3) matrix = 10010
P.s: Сильно не ругайтесь, если я глупость сморозил - может еще не проснулся...