Shortcuts for XOR and XNOR
The classical formula for XOR on two variables remains
result = a.b' + b.a'
(where . means logical AND and + means logical OR and ' means logical NOT).On the possible set of values, the table becomes something like :
| a | b | result |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
which boils down to the interpretation of ANY BUT NOT ALL. This holds true for any no of variables in question, i.e.,
a ^ b ^ c ^ d ^ e ^ ....... x ^ y ^ z = 0
(iff all a, b, c ... z == 0|1 together. And ^ denotes XOR operation.)
So when it comes to applying an XOR formula to 2 variables, say a & b and storing their result in a variable, say x.
The starting point would be
x = (a AND !b) OR (b AND !a).
While this is correct, problems may arise when a & b are themselves functions which return true/false. In this case, the functions a & b would be executed twice just to compute the value of x. In cases where this may not be desired, we could stick to the short hand equivalent for XOR.
x = (a != b)
Which says that the result will be 1(true) only when both the variables are not the same, as can be inferred from the truth table above.
It solves many problems:
- Reduces typing effort
- Doesn't evaluate functions twice
- Reduces complexity when a & b themselves become large expressions.
- Makes code easy to read and understand and maintain
result = (a XOR b)', where ' means logical complement.
result = (a.b' + b.a')'
= (a'+b) . (b'+a)
= a'b' + b.b' + b.a + a'.a
= a.b + a'.b'
In plain words, we could simply derive that
a XNOR b = !(a XOR b)
= !(a != b)
a XNOR b = (a == b)
But for the curious reader, the truth table should be enough proof:
Taking the derived formula
result = a.b + a'.b'
| a | b | result |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Readers to this point can observe that the result is 1(true) only when (a == b).
No comments:
Post a Comment