Verständnisfrage zu Bit Operatoren



  • Hallo alle zusammen,

    in meinen Buch werden jetzt die Bit-Operatoren eingeführt und ich versteh leider irgendwie nur Bahnhof.

    Angenommen Variable i ist vom typ unsigned short und hat 16 bit.

    i = 0x0000;    /* i is now 0000000000000000 */
    i |= 0x0010;   /* i is now 0000000000010000 */
    

    Wie ich habe ich 0x0000 / 0x0010 zu lesen? Was soll das sein? In meinem Buch steht so: "The easiest way to set bit 4 is to or the value of with the constant 0x0010 (a "mask" that contains a 1 bit in position 4).

    Was für eine "Maske" 😕

    Hab mal ein bisschen gegoogled und auch eine Power-Point Show der Columbia University macht mich hier nicht schlauer, im Gegenteil. Dort steht so:

    a |= 0x4; /*Set bit 2*/
    

    Das hat mich ehrlich gesagt noch mehr Verwirrt...

    Kann mir hier jemand auf die Sprünge helfen?

    Vielen Dank 🙂 !



  • Zum Verständnis erstmal:
    http://de.wikipedia.org/wiki/Dualsystem
    http://de.wikipedia.org/wiki/Hexadezimal

    Die Lange Zahl in den Kommentaren ist im Dualsystem notiert.
    Die Zahlen mit dem 0x davor im Hexadezimalsytem

    Die kann man recht einfach ineinander umwandeln, da eine Hexadezimalstelle für vier Dualstellen steht.

    0000 0000 0001 0000 Dual
       0    0    1    0 Hex
    

    führende Nullen kann man weglassen.

    0100 Dual
       4 Hex
    

    Die Bitstellen werden von rechts nach links gelesen. Die ganz rechte Stelle ist

    die Position 0.
    3210 Position
    0100 Dual
       4 Hex
     ^ Position 2 gesetzt.
    


  • Achso, bei den Bitoperatoren werden jeweils die Bits an den gleichen Positionen miteinander verknüpft.

    Maske heißt das, weil du mit diesen Operatoren Bits ausblenden bzw einblenden (maskieren) kannst.



  • Ich danke dir ! 🙂


Anmelden zum Antworten