Werte mit OR Verknüpfen, wie krieg ich die einzelnen Parameter?



  • Hallo,
    Hab mal ne allgemeine Frage. Ist wohl auch mehr ne Frage zu boolsche Algebra.
    Bei der WinAPI kann man oft ja verschiedene Werte mit

    |
    

    verknüpfen.
    Windows weiß dann irgendwie was man alles mit OR verknüpft hat...

    Wie funktioniert das?
    Wie kann man sich da raustüfteln, was alles angegeben worden ist ?

    Wenn jmd. da fit ist, kann er ja seine Weisheit mal mit mir teilen 😉
    Das interessiert mich total! 🙂

    Gruss,
    Mathias



  • Hi,

    nehmen wir an, du hast 3 Bits (000). Jedes der Bits is ne Art Flag, das irgend ne Option signalisiert.
    Dann hab ich noch 3 Konstanten, in der jeweils 1 Bit gesetzt ist, also z.B.:
    <pseudocode>
    FLAG1 = 1; (Binär: 001)
    FLAG2 = 2; (Binär: 010)
    FLAG3 = 4; (Binär: 100)

    Nun möchte ich FLAG1 und FLAG3 setzen. Dazu verodere ich einfach FLAG1
    und FLAG3 und erhalte:

    ERGEBNIS = FLAG1 | FLAG3
    101 = 001 | 100
    </pseudocode>

    ERGEBNIS übergeb ich jetzt an irgend ne Funktion und anhand der gesetzten Bit weiß diese, welche Optionen ich setzen wollte.

    Alles klar?



  • als werte für die flags kommen nur 2er potenzen in frage, also 1,2,4,8,16 usw.
    maximale anzahl von flags die man in eine normale variable packen kann sind 32(unsigned int)

    um herauszubekommen, ob das bit welches den wert 2 hat gesetzt ist, fragt man einfach:

    wert&2



  • kann man einen einzelnen Bit abfragen bei C++?
    Oder muß nen Algo her?

    Gruss & DANKE!
    Mathias



  • ja geht einfach mit dem entsprechenden bit verunden ist das ergebnis ungleich null ist der bit gesetzt...

    z.b.

    if(zahl&4){//...3.tes bit gesetzt}
    else{////...3.tes bit nicht gesetzt}
    

Anmelden zum Antworten