Логическая операция ⊕ - это "исключающее ИЛИ" (xor в языках Паскаль, Бейсик и т.д.), а → операция присваивания. Тогда a⊕b→a; a⊕b→b; a⊕b→a - это был обмен значениями a ↔ b Теперь по этой же схеме обменяем местами b и с: b⊕c→b; b⊕c→с; b⊕c→b. Результат: b→a; c→b; a→c
Программа для иллюстрации: // PascalABC.NET 3.1, сборка 1218 от 12.04.2016 begin var a:=50; var b:=-20; var c:=0; Println('Исходные значения: a=',a,'b=',b,'c=',c); a:=a xor b; b:=a xor b; a:=a xor b; b:=b xor c; c:=b xor c; b:=b xor c; Println('Результат обмена: a=',a,'b=',b,'c=',c) end.
Для перевода из двоичной в шестнадцатеричный надо код разделить на тетрады (на группы по 4 цифры): 0101 1101 1000 1010 1010 1111 0010 1010 Если слева недостаточно цифр до тетрады, то слева добавляем нули. Далее переводим тетрады в шестнадцатеричный код с таблицы: 0000 => 0 0001 => 1 0010 => 2 0011 => 3 0100 => 4 0101 => 5 0110 => 6 0111 => 7 1000 => 8 1001 => 9 1010 => A 1011 => B 1100 => C 1101 => D 1110 => E 1111 => F 0101 1101 1000 1010 1010 1111 0010 1010 = 5D8AAF2A
Для перевода в восьмеричный код делаем аналогично, только на двоичный код делим на группы по 3 цифры: 001 011 101 100 010 101 010 111 100 101 010 И также если не хватает до 3-ех цифр, то слева добавляем нули. Затем переводим по аналогичной таблице: 000 => 0 001 => 1 010 => 2 011 => 3 100 => 4 101 => 5 110 => 6 111 => 7 001 011 101 100 010 101 010 111 100 101 010 = 13542527452
Тогда a⊕b→a; a⊕b→b; a⊕b→a - это был обмен значениями a ↔ b
Теперь по этой же схеме обменяем местами b и с:
b⊕c→b; b⊕c→с; b⊕c→b.
Результат: b→a; c→b; a→c
Программа для иллюстрации:
// PascalABC.NET 3.1, сборка 1218 от 12.04.2016
begin
var a:=50;
var b:=-20;
var c:=0;
Println('Исходные значения: a=',a,'b=',b,'c=',c);
a:=a xor b; b:=a xor b; a:=a xor b;
b:=b xor c; c:=b xor c; b:=b xor c;
Println('Результат обмена: a=',a,'b=',b,'c=',c)
end.
Результат:
Исходные значения: a= 50 b= -20 c= 0
Результат обмена: a= -20 b= 0 c= 50