Bitmasken funktionieren, weil im Binärsystem jede Potenz von 2 (d.h. 2 0 \=1, 2 1 \=2, 2 1 \=4) einen einzigen Platz in der Bitfolge einnimmt. Zum Beispiel:
decimal | binary
1 | 0001
2 | 0010
4 | 0100
8 | 1000
Wenn Sie or
(der Betreiber |
in C-ähnlichen Sprachen) zwei Zahlen a
y b
zusammen zu c
Sie sagen also: "Nimm die Teile, die in a
, b
oder beides und setzen Sie sie in c
." Da eine Zweierpotenz eine einzelne Position in einer binären Zeichenfolge darstellt, gibt es keine Überschneidungen, und Sie können feststellen, welche Stellen gesetzt wurden. Zum Beispiel, wenn wir or
2 und 4
0010 | 0100 = 0110
Beachten Sie, dass sie im Grunde beides kombiniert. Andererseits, wenn wir or
5 und 3:
decimal | binary
5 | 0101
3 | 0011
0101 | 0011 = 0111
Beachten Sie, dass wir nicht feststellen können, welche Bits woher stammen, da sich die binäre Darstellung der einzelnen Bits überschneidet.
Dies wird anhand eines weiteren Beispiels noch deutlicher. Nehmen wir die Zahlen 1, 2 und 4 (alles Potenzen von zwei)
0001 | 0010 | 0100 = 0111
Dies ist das gleiche Ergebnis wie 5 | 3
! Da die ursprünglichen Zahlen jedoch Zweierpotenzen sind, können wir eindeutig feststellen, woher jedes Bit stammt.