*schlag*
![grin grin](/ubb7/images/graemlins/default_dark/grin.gif)
Du hast noch was vergessen:
Wenn wir jetzt beispielsweise (1<<0) und (1<<3) haben, sind das ja dann 1 und 8. Binär also 0b0001 und 0b1000.
Wenn wir hier jetzt mit Plus rechnen, kommt 9 raus. Im Binären sieht das so aus:
0b0001 + 0b1000 = 0b1001
Man kann jetzt aber auch eine Bit-Verknüpfung mit Oder machen:
0b0001 | 0b1000 = 0b1001
Es ist das gleiche Ergebnis, aber nur bei Zahlen, die keine gemeinsamen Bitstellen haben.
Wenn man jetzt 9 und 3 nimmt, kommen folgende Ergebnisse raus:
0b1001 + 0b0011 = 0b1100 == 12
0b1001 | 0b0011 = 0b1011 == 11
In dem Fall ist es so, dass bei Plus wirklich addiert wird, aber bei der Verknüpfung die einzelnen Bits gesetzt(verknüpft) werden.
Dies geschieht nach folgendem Muster:
Eine Oder-Verknüfpung (|):
B1__B2__E
_0___0__0
_0___1__1
_1___0__1
_1___1__1
Eine Und-Verknüfung (&):
B1__B2__E
_0___0__0
_0___1__0
_1___0__0
_1___1__1
Man kann mit dem beiden Verknüpfungsarten entweder einzelne Bits setzen oder auch auslesen:
Setze Bit 1:
0b1000 | 0b0010 = 0b1010
Überprüfe, ob das Bit 2 gesetzt ist:
0b1010 & 0b0100 = 0b0000 Wert ist 0, Bit nicht gesetzt
0b1110 & 0b0100 = 0b0100 Wert ist 1, Bit gesetzt
So, hoffentlich ausreichend noch die Bitverknüpfungen erklärt