Помощь - Поиск - Пользователи - Календарь
Полная версия: Xor
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Guest
Что значит xor? blink.gif
volvo
Исключающее ИЛИ: A xor B принимает значение "Истина" тогда, когда значения A и B неодинаковы... Если и A и B одновременно равны True (или одновременно - False), то Xor вернет "Ложь"...

Кстати, очень удобно: если 2 раза произвести Xor с одним и тем же числом, то первое значение будет восстановлено.

B := 39;
B := B xor 12; { b = 43 }
B := B xor 12; { b = 39 }
Altair
Еще xor используют в алгоритмах шифрования..
http://subway.net.ru/diary/20.07.2003/3
Lapp
Все правильно, но я подумал, что все словесные объяснения сильно проигрывают перед простой табличкой. Для пользы дела привожу тут три таблички для основных операций. Чтобы сохранить форматирование, пользуюсь тегом CODE
Код

 AND              OR               XOR
  | 0 1            | 0 1            | 0 1
-------          -------          -------
0 | 0 0          0 | 0 1          0 | 0 1
1 | 0 1          1 | 1 1          1 | 1 0
Digitalator
с помощью xor можно делать быстрый swap (обмен значениями двух переменных)
Код

a := a xor b;
b := a xor b;
a := a xor b;


a... b...
1100 1010
0110 1010
0110 1100
1010 1100


и еще много вкусных разностей можно делать с помощью xor.
volvo
Digitalator, я уже говорил, и приводил код, показывающий, что не такой уж он и быстрый ...
FreeMan
To: volvo
И ты действительно был прав. Я у себя проверил. Быстрее - только асм-вставка smile.gif
Altair
Цитата
И ты действительно был прав. Я у себя проверил. Быстрее - только асм-вставка

обычный обмен с использованием 3 переменной быстрее...
GoodWind
начинается оффтоп mad.gif wink.gif

М
Согласен правильное решение.
от себя: блин уж и поболтать нельзя smile.gif
Altair

Digitalator
Цитата
Digitalator, я уже говорил, и приводил код, показывающий, что не такой уж он и быстрый

Зависит от компилятора (а они бывают разные ...)
Digitalator
вру .... xor выполняется процессором медленнее чем mov blink.gif с чего бы это ...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.