Moin,
Du rechnest falsch. Für E_ALL ohne E_NOTICE musst du E_ALL AND NOT E_NOTICE rechnen und nicht E_ALL NOT E_NOTICE.
das Ergebnis ist aber dasselbe, solange im Ausgangswert (E_ALL) alle Bits gesetzt sind. Bei 2047 = 0x07FF ist das der Fall, darum führen beide Rechnungen zum gleichen Ergebnis.
Zahlenwerte:
E_ALL = 0x07FF
E_NOTICE = 0x0008
Rechenweg mit AND und NOT:
0x07FF & (~0x0008) =
0x07FF & 0xFFF7 = 0x07F7 = 2039 - passt also.
Rechenweg mit reinem XOR:
0x07FF ^ 0x0008 = 0x07F7 = 2039 - passt auch. qed.
Als Ergebnis sollte dann 2039 rauskommen.
Das tut es auch. :-)
Schönen Tag noch,
Martin
--
Lieber eine Fliege im Porzellanladen
als ein Elefant in der Suppe.
Lieber eine Fliege im Porzellanladen
als ein Elefant in der Suppe.