Bit-Manipulation

  • Hm, stimmt eigentlich. Wenn ichs mir hier so textuell reinlesen tu, is es das MSB, aber eigentlich passt "ERSTE" besser aufs LSB.

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • Hallo,

    vielen Dank erstmal für die Hilfe. Es funktioniert soweit. Leider verstehe ich nicht, wie man von der Position des Bits zur Hex-Darstellung kommt. Welche Hex-Zahl steht hinter dem zweiten, dritten,... Bit?

  • Einfach Bin in Hex umrechnen. Brauchst eh nur den 4er Block umrechnen, in dem das Bit drin ist, die andern sind eh klar.

    In einen FBO rendern ist wie eine Schachtel Pralinen - man weiß nie, was man kriegt.

  • Ein Integer hat 32 Bit.

    z.B.:

    11110000111100001111000011110000
    Das wär Binär. In Hex kannst immer vier binärziffern zusammenziehen zu einer Hexadezimalziffer:
    F0F0F0F0
    das 0x heißt nur, dass es Hexadezimal ist. Wennst jetzt oben schaust:
    0x7FFFFFFF = 7FFFFFFF
    7 = 0111
    F = 1111

    => 7FFFFFFF = 0111 1111 1111 1111 1111 1111 1111 1111

    Das ist die Maske. Wenn du jetzt deine Zahl bitweise mit der Zahl verUNDest, dann hast:

    0111 1111 1111 1111 1111 1111 1111 1111 &
    1111 0000 1111 0000 1111 0000 1111 0000 =
    -----------------------------------------------------
    0111 0000 1111 0000 1111 0000 1111 0000

    Somit hast das MSB gelöscht.. alles klar?

    640K ought to be enough for anybody. :eek2:

  • Eine Hex besteht aus 4 Bit ... demnach sind 2 Hexzahlen 8 bit lang.
    Int als Datentyp ist zumeist 32 bit lang. Logischerweise werden daher 8 Hexzahlen benötigt. Hoffe das ist soweit verständlich genug, dass du dir den letzten Reim noch selbst bilden kannst ;)

  • Zitat von wood

    Leider verstehe ich nicht, wie man von der Position des Bits zur Hex-Darstellung kommt. Welche Hex-Zahl steht hinter dem zweiten, dritten,... Bit?


    Man braucht auch nicht wirklich die Hexdarstellung, mit Hilfe von left shifts kommt man auch zum gewünschten Ergebnis:

    1 << 0 = 1 = 0x1
    1 << 1 = 2 = 0x2
    1 << 2 = 4 = 0x4
    1 << 3 = 8 = 0x8
    1 << 4 = 16 = 0x10
    1 << 5 = 32 = 0x20
    usw.

    Setzen des 6. bits wär also x |= (1 << 6);
    Löschen des 6. bits: x &= ~(1 << 6);
    da man mit Hilfe von ~ die einzelnen bits negiert.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!