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

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

Войти
Регистрация
Восстановить пароль
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

Xor на не примитивный тип - C++

02.12.2013, 15:40. Просмотров 248. Ответов 8
Метки нет (Все метки)

Собственно, как?
C++
1
2
3
4
5
6
struct X
{
unsigned char a, b, c, d, e;
}
/*...*/
X x1, x2, x3 = x1 ^ x2; //не дает
(не важно, что не инициализированы)
Вручную перебирать Xor-ом все 5 полей - не комильфо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 15:40     Xor на не примитивный тип
Посмотрите здесь:

Примитивный интерфейс к си++ - C++
Привет, парни. Поступило задание, сделать игрушку крестики нолики с примитивным интерфейсом. В консоли код более менее написал, работает, а...

Не компилируется примитивный код - C++
Ребят вчера поставил visual studio, всё норм создаю проект win 32 object, добавляю новый предмет файл с++, и при компиляции простого...

Примитивный шаблонный класс С++ - C++
Создайте пожалуйста любой шаблонный класс на начальном (или "примитивном") уровне языка. Для понимания сделайте с розьяснением...

Пишу примитивный никому не нужный контейнер - C++
захотелось для практики написать аналог array из STL :) ну не полностью аналог, так, по своему как мне он был бы удобен... безо всяких...

Самый простой, примитивный морской бой - C++
Достаточно много исходников уже искал но так и не нашел что нужно нужно как можно проще написать примитивный морской бой 10х10 ...

Примитивный текстовый редактор основанный на итераторах (по Страуструпу) - C++
Доброго времени суток! Пытаюсь реализовать текстовый редактор описанный Страуструпом в его Принципах и Практике. Его код не работает,...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
newbie666
Заблокирован
02.12.2013, 15:42     Xor на не примитивный тип #2
а откуда компилятор знает, что с твоей структурой делать? определяй вместо структуры класс и переопределяй ксор для него
Nick Alte
Эксперт С++
1607 / 999 / 118
Регистрация: 27.09.2009
Сообщений: 1,926
Завершенные тесты: 1
02.12.2013, 15:45     Xor на не примитивный тип #3
Ну... Э... не вручную тогда? Тащемта определить операторы например?
C++
1
2
3
4
5
6
7
8
9
10
11
12
X& operator ^= (const X& rhs)
{
    a ^= rhs.a;
    b ^= rhs.b;
   ...
    return *this;
}
 
X operator ^ (const X& rhs) const
{
    return X(*this) ^= rhs;
}
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
02.12.2013, 15:51  [ТС]     Xor на не примитивный тип #4
Неужели нельзя компилятор заставить заксорить каждый отдельный элемент - не важно, что это - указатель, другой класс или POD?
Nick Alte
Эксперт С++
1607 / 999 / 118
Регистрация: 27.09.2009
Сообщений: 1,926
Завершенные тесты: 1
02.12.2013, 16:04     Xor на не примитивный тип #5
Напрямую, нельзя, потому что далеко не факт, что для них определён оператор ^, а произвольные memberwise-конструкции в C++ не предусмотрены, только несколько специальных случаев. Разумеется, тем, кто не боится грязи, никто не мешает работать с памятью напрямую:
C++
1
2
3
4
5
6
7
8
9
10
11
template<typename T>
T Xor(const T& lhs, const T& rhs)
{
    T rv(lhs);
    unsigned char* dst = reinterpret_cast<unsigned char*>(&rv);
    unsigned char* const end = dst + sizeof(T);
    const unsigned char* src = reinterpret_cast<const unsigned char*>(&rhs);
    for(; dst != end; ++dst, ++src)
        *dst ^= *src;
    return rv;
}
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
02.12.2013, 16:26  [ТС]     Xor на не примитивный тип #6
Nick Alte, странно. Просто не понимаю, чо мешает компилятору ксорить побитово во всех случаях.. Указатели - те же int, структуры составлены из указателей и POD с вероятностью 100%, ведь даже если в структуре есть объекты других классов, к ним можно применить то же правило и в конце концов все поля за-xor-ятся :< Понятно дело, что такое никогда не пригождается, но.. :/
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.12.2013, 17:05     Xor на не примитивный тип #7
Цитата Сообщение от newbie666 Посмотреть сообщение
определяй вместо структуры класс и переопределяй ксор для него
А что для структуры уже нельзя оператор перегрузить?
Цитата Сообщение от nexen Посмотреть сообщение
Просто не понимаю, чо мешает компилятору ксорить побитово во всех случаях
Потому что это не нужно. Таким макаром можно и про все остальные операторы рассуждать.
Цитата Сообщение от nexen Посмотреть сообщение
Понятно дело, что такое никогда не пригождается, но..
Вот сами и ответили
newbie666
Заблокирован
02.12.2013, 17:06     Xor на не примитивный тип #8
Цитата Сообщение от Tulosba Посмотреть сообщение
А что для структуры уже нельзя оператор перегрузить?
даа можно конечно
класс просто по солидней будет
А ваще все эти структуры и классы только наследованием и отличаются
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2013, 17:22     Xor на не примитивный тип
Еще ссылки по теме:

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

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

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

Оператор xor - C++
Всем добрый вечер.Чем отличаются следующие выражения: (a || b) &amp;&amp; !(a &amp;&amp; b); и (a^b);

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


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.12.2013, 17:22     Xor на не примитивный тип #9
Цитата Сообщение от newbie666 Посмотреть сообщение
структуры и классы только наследованием и отличаются
доступом по умолчанию, я бы сказал.
Yandex
Объявления
02.12.2013, 17:22     Xor на не примитивный тип
Ответ Создать тему
Опции темы

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