Конспект лекций по программированию для начинающих. Гладков В.П. - 42 стр.

UptoLike

Составители: 

44
x y x xor y
0 0 0
0 1 1
1 0 1
1 1 0
С использованием двоичного представления чисел и операции xor
поставленную задачу решает приведенная ниже последовательность
операторов.
Пусть a=5 в двоичном представлении 0101, b=11 в двоичном
представлении 1011.
a a xor b xor:=
0101
1011
1110
Результат помещаем в а.
b a xor b xor: =
1110
1011
0101
Результат помещаем в b.
a a xor b xor:=
1110
0101
1011
Результат помещаем в а.
Окончательно получаем a=1011, b=0101.
Из трех рассмотренных алгоритмов два последних не используют
дополнительной переменной, причем в последнем - только одна операция.
Однако последний алгоритм можно применить к двоичным данным (любым,
хранящимся в виде двоичных последовательностей), второй - только к
числовым. Первый алгоритм имеет универсальный характер: с его помощью
можно
поменять местами не только числа, но и различные предметы: мел и
тряпку, пару бутылок или людей, записи на магнитофонных кассетах и т.д. К
тому же этот алгоритм представляется наиболее наглядным. Приведем запись
этого алгоритма на Паскале:
program obmen;
{ поменять местами значения двух переменных }
var a,b:real; { исходные данные и результат }
r:real; { вспомогательная переменная }
begin write('Введите
два числа ');
readln(a,b);
r:=a; { 1 }
a:=b; { 2 }
b:=r; { 3 }
writeln('результат ',a,' ',b)
end.
                                     44

                             x   y   x xor y
                             0   0      0
                             0   1      1
                             1   0      1
                             1   1      0
   С использованием двоичного представления чисел и операции xor
поставленную задачу решает приведенная ниже последовательность
операторов.
   Пусть a=5 в двоичном представлении 0101, b=11 в двоичном
представлении 1011.
                      0101
   a: = a xor b   xor 1011
                      1110
Результат помещаем в а.
                      1110
   b: = a xor b   xor 1011
                      0101
Результат помещаем в b.
                    1110
   a: = a xor b xor 0101
                    1011
Результат помещаем в а.
   Окончательно получаем a=1011, b=0101.
   Из трех рассмотренных алгоритмов два последних не используют
дополнительной переменной, причем в последнем - только одна операция.
Однако последний алгоритм можно применить к двоичным данным (любым,
хранящимся в виде двоичных последовательностей), второй - только к
числовым. Первый алгоритм имеет универсальный характер: с его помощью
можно поменять местами не только числа, но и различные предметы: мел и
тряпку, пару бутылок или людей, записи на магнитофонных кассетах и т.д. К
тому же этот алгоритм представляется наиболее наглядным. Приведем запись
этого алгоритма на Паскале:
   program obmen;
   { поменять местами значения двух переменных }
   var a,b:real; { исходные данные и результат }
       r:real; { вспомогательная переменная }
   begin write('Введите два числа ');
           readln(a,b);
           r:=a; { 1 }
           a:=b; { 2 }
           b:=r; { 3 }
           writeln('результат ',a,' ',b)
   end.