Sehr gut erklärt.. Über ODER (|) bzw. UND (&) Operatoren kannst du dann noch Flags setzten bzw. abfragen..

( 1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0
bzw.
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
)

also:

my.skill1 |= Flag16 =


000000000000000 | 1000000000000000
= 1000000000000000

wenn du es jetzt noch mit Flag 2 verknüpfst passiert folgendes:

my.skill1 |= Flag2;

1000000000000000 | 0000000000000010
= 1000000000000010

Also das jeweilige 1. bis 16. Bit wird gesetzt.
Abfragen kannst du es mit den UND Operator..
Beispiel:

my.skill1 & Flag3

1000000000000010 & 0000000000000100
=0000000000000000 (nicht gesetzt)


my.skill1 & Flag2

1000000000000010 & 0000000000000010
=0000000000000010 (gesetzt da ungleich 0)


mfg
TripleX