Simpel lassen sich zwei variable Werte mittels eines Buffers tauschen:
Dim a As Byte = 10, b As Byte = 13
Dim c as New Byte 'Buffer
c = a
a = b
b = c
Mithilfe des bitweisen Exklusiv-Operators XOR lässt sich dies aber auch ohne Hilfsvariable lösen. Wie die Addition gehorcht XOR sowohl dem Kommutativ- als auch dem Assoziativgesetz, d.h. sowohl Vertauschung von Argumenten als auch Umsetzen von Klammern innerhalb der Operation spielen keine Rolle und führen zum selben Ergebnis.
Durch Äquivalenzumformung lässt sich das Prinzip gut veranschaulichen:
a = a XOR b
b = a XOR b
= (a XOR b) XOR b
= a XOR b XOR b
= a XOR 0
= a
a = b XOR a
= a XOR (a XOR b)
= a XOR a XOR b
= 0 XOR b
= b
Diese Methode ist auf alle ganzzahligen Datentypen anwendbar.
Sub switchValue(ByRef a As Long, ByRef b As Long)
a = a Xor b
b = b Xor a
a = a Xor b
End Sub
Abgelegt unter
bitweise,
bitwise,
xor,
or,
oder,
exklusiv,
exclusive,
operator,
tauschen,
switch,
carry,
buffer,
variable,
math,
mathe,
kommutativ,
assoziativ,
addition.
5 Kommentare zum Snippet