On Friday, 24 June 2016 at 20:34:38 UTC, deadalnix wrote:
On Friday, 24 June 2016 at 10:33:43 UTC, Patrick Schluter wrote:
On Friday, 24 June 2016 at 10:11:11 UTC, deadalnix wrote:
On Friday, 24 June 2016 at 08:40:26 UTC, Patrick Schluter wrote:
On Thursday, 23 June 2016 at 20:01:26 UTC, deadalnix wrote:
On Thursday, 23 June 2016 at 19:24:54 UTC, via Digitalmars-d wrote:
On Thu, Jun 23, 2016 at 07:11:26PM +0000, deadalnix via Digitalmars-d wrote:
| is bitwize or. || is binary or.
& is bitwize and. && is binary and.
^ is bitwize xor. ^^ is... no, never mind.

binary xor is.... !=

lol

3 != 5 is true.
3 binaryxor 5 is false.

He meant logical xor, because binary xor exists (^) and there would be no point to mention an equivalence.

Still doesn't work.

It works if you cast each side of the comparison to boolean values (that's what logical and/or do implicitely, for != it has to be done explicitely as the operator has never been seen as logical xor).
in C (sorry I'm not fluent in D yet).
(bool)3 != (bool)5 or old fashioned !!3 != !!5 or after De Morgan transformation !3 == !5.

So, logical xor isn't != either is it ?

It is, I shouldn't have posted the old fashioned (i.e. without C99 bool type) version, it has confused you.

Let's see the truth table for logical xor and !=

a  |  b  |  a ^ b | a != b
---|-----|--------|--------
0  |  0  | 0      | 0
0  |  1  | 1      | 1
1  |  0  | 1      | 1
1  |  1  | 0      | 0

omg, it's the same result, but you have first to reduce each side of the expression to its canonical boolean value 0 or 1 (false or true in Java or D).
That's also what the logical && and || do, compared to & and |.



Reply via email to