На днях, переписывая один крипто компонент для Delphi, столкнулся со странной оптимизацией кода и алгоритма. В одном месте я увидел манипуляции с массивами, которые, если упростить, выглядели следующим образом:
a := a
xor b;
b := b
xor a;
a := a
xor b;
Если при манипуляции с
xor переменная встречается несколько раз, значит алгоритм подразумевает получение переменной в ее начальном состоянии. Для чего тут это нужно. Зная логику работы
xor можно составить следующие выражения:
b := b
xor (a
xor b);
что дает нам aa := (a
xor b)
xor a;
что дает нам bТ.е. это всего лишь обмен местами двух переменных без использования промежуто
...
Читать дальше »