1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Bit-Manipulation

  • wood
  • 12. Juli 2006 um 10:01
  • Unerledigt
  • wood
    2
    wood
    Mitglied
    Punkte
    20
    Beiträge
    3
    • 12. Juli 2006 um 10:01
    • #1

    Hallo,

    ich würde gerne nur das erste Bit einer int-Zahl setzen bzw. löschen. Wie kann man da vorgehen? Danke im Voraus!

  • Wolfibolfi
    37
    Wolfibolfi
    Mitglied
    Reaktionen
    186
    Punkte
    14.936
    Beiträge
    2.942
    • 12. Juli 2006 um 10:25
    • #2

    zum Löschen machst "x & 0x7FFFFFFF", zum Setzen machst "x | 0x80000000"

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

  • lerod
    13
    lerod
    Mitglied
    Reaktionen
    5
    Punkte
    1.620
    Beiträge
    315
    • 12. Juli 2006 um 13:52
    • #3

    Die Frage ist eigentlich noch, welches ist das ERSTE Bit? +gg+

  • Wolfibolfi
    37
    Wolfibolfi
    Mitglied
    Reaktionen
    186
    Punkte
    14.936
    Beiträge
    2.942
    • 12. Juli 2006 um 13:57
    • #4

    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.

  • lerod
    13
    lerod
    Mitglied
    Reaktionen
    5
    Punkte
    1.620
    Beiträge
    315
    • 12. Juli 2006 um 14:13
    • #5

    Die Fragestellung ist halt nicht eindeutig, aber ich denke mal, er wird deine Lösung gesucht haben.

    LG

  • wood
    2
    wood
    Mitglied
    Punkte
    20
    Beiträge
    3
    • 12. Juli 2006 um 14:53
    • #6

    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?

  • Wolfibolfi
    37
    Wolfibolfi
    Mitglied
    Reaktionen
    186
    Punkte
    14.936
    Beiträge
    2.942
    • 12. Juli 2006 um 15:07
    • #7

    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.

  • Swoncen
    22
    Swoncen
    Mitglied
    Reaktionen
    1
    Punkte
    5.331
    Beiträge
    993
    • 12. Juli 2006 um 15:11
    • #8

    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:

  • lerod
    13
    lerod
    Mitglied
    Reaktionen
    5
    Punkte
    1.620
    Beiträge
    315
    • 12. Juli 2006 um 15:13
    • #9

    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 :winking_face:

  • djmaecki
    8
    djmaecki
    Mitglied
    Reaktionen
    1
    Punkte
    616
    Beiträge
    119
    • 12. Juli 2006 um 15:35
    • #10
    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.

  • wood
    2
    wood
    Mitglied
    Punkte
    20
    Beiträge
    3
    • 12. Juli 2006 um 15:43
    • #11

    Vielen Dank, habe es jetzt verstanden!

  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern