Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
#1

Оператор xor - C++

27.07.2012, 19:45. Просмотров 1564. Ответов 11
Метки нет (Все метки)

Всем добрый вечер.Чем отличаются следующие выражения:

C++
1
     (a || b) && !(a && b);
и

C++
1
     (a^b);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2012, 19:45     Оператор xor
Посмотрите здесь:

оператор XOR - C++
объясните, что делает XOR, желательно понятным простому смертному языком. например: 0 xor 1 = 1 1 xor 1 = 0 0 xor 0 = 0 1 xor...

Оператор для xor шифрования - C++
Разматриваю пример шифрования, возник детский вопрос ^ что делает этот оператор?

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор * - C++
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор копирования, бинарный оператор суммы «*»,...

XOR without XOR - C++
Здравствуйте, уважаемые знатоки) В общем-то интересует (как можно воплотить подобную штуку) --------- By knowing that XOR may be...

xor, not - C++
кто может помочь с операциями ^(xor) и -(not). если можно навести примеры с реальными числами что они делают, например 2^3 или что-то...

XOR пароля - C++
подскажите где ошибка? когда пишу правильный пароль, в if при сравнении пароли одинаковые но все равно выводит: "cout <<"Error " <<...

быстрый xor - C++
Нужно про-xor-ить биты в числе. Можно ли это сделать быстрее, чем u_char r = 0; for (i = 0; i < sizeof (u_char); ++i) r ^= (n >>...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
27.07.2012, 19:53     Оператор xor #2
^ - побитовое (поразрядное) исключающее или
а || и && это логические операции
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.07.2012, 19:55     Оператор xor #3
В первом случае это логическое выражение, а во втором - побитовое. А вот так:
(a | b) & ~(a & b)
и
a^b
это уже одно и тоже, только второе быстрее считается.
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
27.07.2012, 19:55  [ТС]     Оператор xor #4
Но результат один и тот же!!! Почему?
Thinker
Эксперт C++
4221 / 2195 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
27.07.2012, 19:57     Оператор xor #5
Цитата Сообщение от bgm313 Посмотреть сообщение
Но результат один и тот же!!! Почему?
Потому что эти выражения задают одну и ту же функцию.
Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
27.07.2012, 20:13     Оператор xor #6
Цитата Сообщение от bgm313 Посмотреть сообщение
Но результат один и тот же!!! Почему?
ну вообще не одно и то же..
C++
1
2
3
4
5
6
7
8
int main(){
        int a =6;
        int b =5;
        cout << ((a || b) && !(a && b));
        cout<<endl<<(a^b);
        _getch();
        return 0;
}
Thinker
27.07.2012, 20:18
  #7

Не по теме:

Leomana,
(a | b) & ~(a & b)
и
a^b
это одно и тоже, а не то, что в первом посте. Логическое и побитовое выражения разве можно сравнивать?!...

Leomana
58 / 58 / 5
Регистрация: 29.06.2012
Сообщений: 188
27.07.2012, 20:36     Оператор xor #8
Цитата Сообщение от Thinker Посмотреть сообщение

Не по теме:

Leomana,
(a | b) & ~(a & b)
и
a^b
это одно и тоже, а не то, что в первом посте. Логическое и побитовое выражения разве можно сравнивать?!...

ну конечно это разные вещи =)
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
28.07.2012, 22:17     Оператор xor #9
a ^ b == (a & (~b)) | ((~a) & b)
Вроде я так понимаю. Т.е. одно из них истина а другое ложь. Тогда 1, иначе - 0.
alkagolik
Заблокирован
29.07.2012, 03:03     Оператор xor #10
b_kasenov47, нет. Ложь, истина в случае битовых операций применяются к каждому биту в отдельности, тогда как в логических выражениях это просто возврат регистра флага, который устанавливается если результат операции равен нулю.
В твоем случае логическое сложение по модулю
http://www.cyberforum.ru/cgi-bin/latex.cgi?x\oplus y \equiv \bar{x} \wedge y \vee x \wedge \bar{y} \equiv x \vee y \wedge \bar{ x \wedge y}
в качестве операндов выступают байты, которые приводятся к единице, если они не равны нулю и далее вычисляется выражение.
Битовое сложение по модулю то же самое, !но... вместо операндов (множество {0,1}) выступают операнды множества http://www.cyberforum.ru/cgi-bin/latex.cgi?-2^{n}..2^{n}-1
http://www.cyberforum.ru/cgi-bin/latex.cgi?X\oplus Y \equiv \bar{X} \wedge Y \vee X \wedge \bar{Y} \equiv X \vee Y \wedge \bar{ X \wedge Y}
http://www.cyberforum.ru/cgi-bin/latex.cgi?X=\{x_{n - 1}, ..., x_{1}, x_{0}\}, Y=\{y_{n - 1}, ..., y_{1}, y_{0}\}
n - разрядность процессора, числа не приводятся к логическому виду и берутся "как есть". Операнд является двоичным вектором, производится логическая операция с каждым битом операндов (вектора с вектором), результат соответственно записывается в соответствующий бит результата(регистра) и на выходе ты имеешь неформатированное число.
b_kasenov47
14 / 14 / 1
Регистрация: 28.07.2012
Сообщений: 57
29.07.2012, 12:27     Оператор xor #11
я так вчитался...
1)т.е. получается, что мое выражение верно лишь для беззнаковых целых???
2)оно верно для логических выражений?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2012, 13:03     Оператор xor
Еще ссылки по теме:

Xor encrypt - C++
Есть файл зашифрованный с помощью 16 битного ключа только xor. Какие есть предложения для вскрытия шифра?

Примеры XOR шифрования - C++
Здравствуйте. Хотелось бы увидеть примеры XOR шифрования на C++, т.к. в интернете я не сильно много нашел (возможно плохо искал). Искал...

XOR не много не понимаю - C++
В общем изучаю XOR и появился вопрос, написал программу 1 которая из файла берет текст и декодирует из XOR в обычный текст , при...

XOR 32 bit key - C++
Здравствуйте! Подскажите, пожалуйста. Есть чаровский массив, т.е каждый символ 1 байт, есть ключ 32 бита или 4 байта, как зашифровать...

XOR над float? - C++
Доброго времени суток! Пользователем задается команда (unsigned int a), значение1 (b), значение2 (c). в зависимости от команды...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
29.07.2012, 13:03     Оператор xor #12
Цитата Сообщение от b_kasenov47 Посмотреть сообщение
я так вчитался...
1)т.е. получается, что мое выражение верно лишь для беззнаковых целых???
2)оно верно для логических выражений?
1. Оно верно для любых целых, биты везде одинаковы.
2. Технически да, false приводится к нулю, true к единице, так что всё окей.
Yandex
Объявления
29.07.2012, 13:03     Оператор xor
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru