ja ne also deine beiden masks da
0x0000000040180020
0x0000000040000001
ergibt 0x40180021
weil du nicht addierst sondern bitweises OR machst. Anschaulich schreibst du die Zahlen in binaerschreibweise (10110111 etc) untereinander und im ergebnis ist ueberall eine 1 wo in einer der beiden zahlen eine 1 war, und nur dort eine 0 wo beide eine 0 hatten.
wie lovexd schon schrieb kannst du das einfach selbst rechnen wenn du als einen mysql query einfach "select 0x40180020 | 0x40000001;" eingibst. das ergebnis ist dann dezimal (base10), aber kannste ja einfach nach Hex (base16) umrechnen (lassen) dann.
|
MySQL-Abfrage(n)
|
1
2
3
4
5
6
7
|
mysql> select 0x40180020 | 0x40000001;
+-------------------------+
| 0x40180020 | 0x40000001 |
+-------------------------+
| 1075314721 |
+-------------------------+
1 row in set (0.00 sec)
|
Auf diese Weise kannst du dann masks erstellen, die beliebige spells erlauben, indem du die jeweiligen masks mit dem OR operator | kombinierst.
UI64LIT ist ein Datentyp (Unsigned integer 64bit) und wird hier explizit angegeben, damit der angelegte speicher gross genug ist fuer die masks, die groesser werden koennen als normale integers. Das "aendert" aber am Wert nichts, kannst du einfach als gegeben hinnehmen und ignorieren.