- 1
- 2
- 3
- 4
- 5
- 6
- 7
/********************************************************************
ОПЕРАЦИЯ ЛОГИЧЕСКОЕ ИСКЛЮЧАЮЩЕЕ ИЛИ
********************************************************************/
static inline bool XOR(bool lhs, bool rhs)
{
return (lhs && !rhs) || ( !lhs && rhs);
}
TarasB 11.05.2010 23:14 # +6
absolut 11.05.2010 23:25 # +5
m08pvv 12.05.2010 21:28 # 0
true == 1
false == 0
Есть, конечно иные варианты логики, но это уже изврат!
P.S. на всех известных мне компиляторах такой xor и побитовый отличаются только тем, что говнокодовый медленнее!
absolut 12.05.2010 22:03 # 0
Кто он ? Стандартного нет и баста. Проще чем сказал TarasB придумать сложно.
>такой xor и побитовый отличаются только тем, что говнокодовый медленнее!
XOR из ГК логический, а не побитовый. Вы вообще понимаете разницу между логическими и побитовыми операциями ?
TarasB 12.05.2010 22:19 # 0
Проверка на неравенство катит тоже только после приведения к bool.
TarasB 12.05.2010 22:33 # 0
absolut 12.05.2010 22:38 # +2
m08pvv 13.05.2010 07:17 # −2
true == 1
false == 0
разницы нету! разве что ^ выполняется процессором безумно быстро
Говногость 13.05.2010 07:18 # 0
Безумно...
m08pvv 13.05.2010 18:29 # 0
XOR AX, AX ; вот эта битовая операция
; посему и пишут всегда XOR AX, AX вместо MOV'а
absolut 13.05.2010 08:06 # 0
У меня получились одинаковые результаты для != и ^.
Что ещё интереснее логические операции И, ИЛИ оказались быстрее битовых.
m08pvv 13.05.2010 18:14 # 0
absolut 13.05.2010 21:09 # 0
Безусловно.
С оптимизацией != и ^ снова одинаковы.
Логические И, ИЛИ и вовсе в ~30 раз быстрее побитовых.
Собственно сами бы давно проверили чтоб не спрашивать :)
m08pvv 13.05.2010 21:25 # 0
И это весьма логично и ожидаемо (из опыта программирования на asm x86)
absolut 13.05.2010 21:44 # 0
Изначально тестировал на Eclipse с MinGW.
xaionaro 14.05.2010 07:54 # +2
Их надо оставить, просто надо использовать volatile и проверять, objdump-ом, что скомпилен правильный код.
Вы ж не будете итоговый проект компилировать без оптимизаций.
Вообще, очень рекомендую бросать куски дизассемблированного кода, чтобы мы поняли о чём в реальности идёт речь
Dummy00001 12.05.2010 14:07 # 0
TarasB 12.05.2010 18:23 # 0
(lhs || rhs) && !(lhs && rhs)
Мистер Хэнки 12.05.2010 17:12 # +3
Говногость 12.05.2010 18:11 # 0
nil 13.05.2010 10:43 # +3
m08pvv 12.05.2010 21:32 # 0