Here is my proposed logic for deciding the sign of the result when negative values are used in bitwise operations:
XOR - if the signs are different, the result is negative, otherwise the result is positive
OR - if the both signs are negative, the result is negative, otherwise the result is positive
AND - if the both signs are negative, the result is negative, otherwise the result is positive
NOT - if the sign is positive, the result is negative, otherwise the result is positive
I propose to "give preference" to positive values in the result. This has resulted in a logical inconsistency between AND & OR operators.
Maybe the behaviour of the AND & OR operators, should be "opposite" to each other, as follows...
either
OR - if the both signs are negative, the result is negative, otherwise the result is positive
AND - if the both signs are positive, the result is positive, otherwise the result is negative
(a positive sign is considered to a positive "value")
or
OR - if the both signs are positive, the result is positive, otherwise the result is negative
AND - if the both signs are negative, the result is negative, otherwise the result is positive
(a negative sign is considered to a positive "value")
Alternative suggestions are welcome.