Задача 7.
Дан массив X(100) и Y(100). Записать алгоритм, меняющий последовательно местами значения элементов X(k) и Y(k) для этих таблиц, для k=1,2,...,100, не используя промежуточных переменных.
|
Решение задачи 7.
Будем менять местами содержимое переменных A и B. Существует несколько способов сделать это.
1.
Оператор
Значение в A Значение в B
A:=A+B
A+B B
B:=A-B
A+B A
A:=A-B
B A
2. Можно использовать логическую операцию XOR (исключающее или). Таблица истинности для XOR следующая:
1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 0 = 0
0 XOR 1 = 1
Операция XOR над двумя переменными в машине реализуется как побитовая операция над двоичным представлением чисел. Поэтому, в частности, A XOR A = 0, A XOR B = B XOR A, A XOR 0 = A.
Оператор
Значение в A Значение в B
A:=A XOR B
A XOR B B
B:=A XOR B
A XOR B (A XOR ) XOR B=A XOR(B XOR B)=A XOR 0 = A
A:=A XOR B
(A XOR B) XOR A=B XOR (A XOR A)=B A
|