1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Bit-Manipulation

  • wood
  • 12. Juli 2006 um 10:01
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • wood
    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
    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"

  • lerod
    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
    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.

  • lerod
    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
    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
    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.

  • Swoncen
    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?

  • lerod
    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 ;)

  • djmaecki
    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
    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.

  1. Datenschutzerklärung
  2. Impressum