That is, for one thing, sub is asymmetric :)

Hmm well subs would all happen at the 1 bit level. So let's compare.
xor
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0

sub
0 - 0 = 0
0 - 1 = -1 (or non-zero/true, truncates to 1)
1 - 0 = 1
1 - 1 = 0

Sorry, seems the same unless we are going with carry rules, (at which point it is no longer bit arrays subs), it seems to follow the xor rules.

I think you misunderstood. If you view a boolean as a one bit integer, then yes, xor is the same as subtraction. But what Dmitry probably meant is subtracting sets (http://en.wikipedia.org/wiki/Set_(mathematics)#Complements). So for bit arrays a and b the result of a - b would be a bit array where bit at index i is set if it is set in a and not set in b. That's also what documentation for std.bitmanip.BitArray currently says.

Reply via email to