xor und
and not sind äquivalent, vorausgesetzt, dass das Bit das man entfernen möchte auch wirklich enthalten ist, sonst wird es durch
xor gesetzt. Bei
and not kann man sich darauf verlassen, dass es hinterher weg ist.
Code:
a := 00101000
b := 00001000
a and not b =
00101000 and not 00001000 = | Umkehren von b
00101000 and 11110111 = | überall da 1 setzen, wo in beiden Operanden 1, sonst 0
00100000
a xor b =
00101000 xor 00001000 = | überall da 1 setzen, wo in genau einem Operanden 1, sonst 0
00100000
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)