Just sum up what you feel is hard, ha:
(1) Var1=!var2; //(non)
(2) var1=var2&var3; //(with)
(3) Var1=var2|var3; //(OR)
(4) Var1=var2^var3; //(XOR)
“
The difference between "or" and "XOR" is .... var2 and VAR3 have only one value of TRUE,VAR1 is true.
The & and | Operators also have two similar operators, called conditional Boolean operators (see table 4.3).
The results of these operators are exactly the same as & and |, but there is one important difference in the way results are obtained: their performance is better. Both are the values that examine the first operand (var2 in table 4.3 above), and then operate based on the value of the operand, and may not handle the second operand at all (var3 in table 4-3).
If the first operand of the && operator is false, you do not need to consider the second operand.
BOOL Notation (excerpt from classic fifth edition of C # Primer)