Na, ob so eine Uni-Klamotte der beste Weg ist, das zu erklären.
Ein Term mit XOR ergibt als Ergebnis True wenn eine von beiden Bedingungen (nicht jedoch beide gleichzeitig) erfüllt ist.
Für A XOR B könnte man auch schreiben
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function MyXOR(A,B:Boolean):Boolean; begin if (A=True) AND (B=False) or (A=False) AND (B=True) then Result:=True else Result:=False; end; |
Oder verkürzt:
Delphi-Quelltext
1:
| Result:= (A=True) AND (B=False) or (A=False) AND (B=True); |
Oder stärker verkürzt
Delphi-Quelltext
1:
| Result:= (A) AND (not B) or (not A) AND (B); |
oder eben am effektivsten:
Delphi-Quelltext
Xor lässt sich nicht nur auf Boolean-Variablen anwenden, sondern auch auf Integertypen, bei denen dann jeweils die einzelnen Bits miteinander verglichern werden (das niederwertigste Bit von A mit dem niederwertigsten von B usw.).
PS: Im Endeffekt ist die Operation mit Boolean-Werten nichts anderes. Der Boolsche Wert True entspricht einem Binärwert von 00000001, während False dementsprechend 00000000 ist .
Cu,
Udontknow