Вниз
Скачать: CL | DM;

Операция XOR   Найти похожие ветки 

← →
Витёк   (2005-12-07 20:12) [0]

Объясните пожалуйста! Что такое операция xor(исключающее или)! Как и в каких случаях ей можно воспользоваться!??


← →
Kerk ©   (2005-12-07 20:13) [1]

0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0


← →
Eraser ©   (2005-12-07 20:14) [2]


> Витёк   (07.12.05 20:12)

Эта операция инвертирует биты.
Т.е. если есть 0 будет 1, если 1 будет 0.


← →
DrPass ©   (2005-12-07 20:16) [3]


> Как и в каких случаях ей можно воспользоваться!??

Сначала тебе нужно получить лицензию на ее использование и достичь совершеннолетия

> Eraser ©   (07.12.05 20:14) [2]

Это ты уже с операцией NOT перепутал. Бегом учить булеву алгебру


← →
TUser ©   (2005-12-07 20:18) [4]

По сути - проверка на несовпадение


← →
vrem   (2005-12-07 20:22) [5]

Витёк, [1] можешь получить сам, используя windows калькулятор, для любой логической операции.
XOR - удобно использовать для выявления отличия от ожидаемого состояния бита.
(ожидаемое состояние бита) xor (текущее состояние бита) - если =1, значит текущее отличается.


← →
Дмитрий Белькевич   (2005-12-07 20:27) [6]

Логиика:

1 xor 1 = 0
1 xor 0 = 1
0 xor 1 = 1
0 xor 0 = 0

Вроде не наврал...

Использование:
1. Изменение (инверсия) отдельных битов в байте. Те биты, которые установлены (равны единице) в числе-маске (во втором числе), будут инвертированы в числе-источнике.
2.Примитивное кодирование строк. Двойной ксор даст оригинальное значение строчки. Ломается с пол-пинка, зная число, с которым ксорили, узнать его не сложно. Так же можно ксорить по к-либо более хитрому алгоритму. Меняя маску. Например, первая маска - 1, вторая - 2, итд.
3. Один из вариантов отрисовки с режимом xor. Например, если один и тот же отрезок по канве одним цветом нарисовать два раза с режимом pmxor, то канва останется неизменной.

Ну это то, что сразу вспомнил. Наверняка еще есть варианты.


← →
Eraser ©   (2005-12-07 20:28) [7]


> DrPass ©   (07.12.05 20:16) [3]

Гы ) ну эт я криво объяснил. Уже бегу покупать учебник по русской словестности ;-)


← →
Хинт ©   (2005-12-07 20:38) [8]

Это для того, чтоб по-модному обнулять регистры =)
xor ax,ax
Ламеры пользуются mov"ами


← →
palva ©   (2005-12-07 20:46) [9]

А еще чтоб обменять значение переменных. Ламеры пользуются
промежуточной переменной:

{$APPTYPE CONSOLE}
var
 a, b: Integer;
begin
 a := 555;
 b := 888;
 a := a XOR b;
 b := a XOR b;
 a := a XOR b;
 Writeln(a, " ", b); // 888 555
// Еще можно так, но если не обращать внимания на
// возможное переполнение.
 a := b - a;
 b := b - a;
 a := a + b;
 Writeln(a, " ", b); // 555 888

end.


← →
БарЛог ©   (2005-12-07 21:07) [10]

palva ©   (07.12.05 20:46) [9]
Черт возьми, сильно!!


← →
TUser ©   (2005-12-07 21:09) [11]


> palva ©   (07.12.05 20:46) [9]

Вот перенесут твой код на машинку/компилитор с другим способом представления отрицательных чисел - будешь программу переписывать.


← →
palva ©   (2005-12-07 21:19) [12]

> будешь программу переписывать
Не буду, потому что я ламер.


← →
Igorek ©   (2005-12-07 21:25) [13]


> Как и в каких случаях ей можно воспользоваться!??

- нечетное ли число битов в массиве
- обмен
- найти число, которое встречается нечетное число раз в массиве, если остальные - четное число раз
... много других ситуаций


← →
Eraser ©   (2005-12-07 21:41) [14]

TCanvas.DrawFocusRect использует именно XOR.


← →
Anatoly Podgoretsky ©   (2005-12-07 23:12) [15]

Витёк   (07.12.05 20:12)  
Или там, или там исключая и там и там.
противоположность включающее ИЛИ
Или там, или там включая и там и там


← →
Кефир87 ©   (2005-12-08 00:34) [16]

Это все фигня! В каких случаях используют shl и shr?! Мне еще не приходилось...


← →
Skyle ©   (2005-12-08 06:56) [17]


> [16] Кефир87 ©   (08.12.05 00:34)

Хм... Наверное когда требуется сдвинуть вправо или влево?


← →
Думкин ©   (2005-12-08 07:03) [18]

> Кефир87 ©   (08.12.05 00:34) [16]

Умножение, деление на степени двойки.
a*320 = a*256+a*64 = a shl 8 + a shl 6
320 - из режима 320*200 для VGA


← →
БарЛог ©   (2005-12-08 08:44) [19]

У нас в инсте обьясняют вот как:
xor - разноименность (оно же - сложение по модулю два) истина тогда, когда значения аргументов противоположны (для двух агрументов).


← →
Хинт ©   (2005-12-08 09:39) [20]

Shl и Shr... Для умножения и работы с отдельными битами.


← →
wal ©   (2005-12-08 09:47) [21]


> У нас в инсте обьясняют вот как
Я, когда вел кружок информатики объяснял, как битовое вычитание без учета знака, а для меня самого, как электронщика, это обычный однобитовый полусумматор :)


← →
TStas ©   (2005-12-08 18:33) [22]

А еще хором шифруют файлы, но это очень примитивно, т. к. всего 255 наборов, мало очень переборов, зато просто, как 3 коп.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.5 MB
Время: 0.022 c
2-1134472960
Alex_1234
2005-12-13 14:22
2006.01.01
Удаление записи в запросе


4-1130226450
Владислав
2005-10-25 11:47
2006.01.01
Преобразование строк UNICODE.


1-1133630552
Задумавшийся
2005-12-03 20:22
2006.01.01
Хм. А как определить - Unicode, UTF-8 или ANSI?


14-1133991679
Reindeer Moss Eater
2005-12-08 00:41
2006.01.01
Идентифицировать исполнителей


2-1134262990
Officeman
2005-12-11 04:03
2006.01.01
Закрыть программу




   Наверх