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
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

BitSet in C

    • Frage
  • Incazzato
  • 13. Juli 2006 um 14:00
  • Unerledigt
  • Incazzato
    8
    Incazzato
    Mitglied
    Punkte
    570
    Beiträge
    85
    • 13. Juli 2006 um 14:00
    • #1

    Ich kenne aus Java die Klasse BitSet, die sich gut als Menge von Flags einsetzen lässt. Nun brauche ich sowas in C. Es gibt dort zwar sog. Bitfelder, aber bei 255 benötigten Flags wird das etwas umständlich zu programmieren. Würde sowas funktionieren (Bsp für 128-bit-Feld):?

    Code
    struct bitset { uint32 a, uint32 b, uint32 c, uint32 d }; 
    struct bitset = {0, 0, 0, 0}; 
    bitset |= (1<<pos);


    Vermutlich müsste ich beim Setzten eines Bits noch ein bisschen herumcasten. Oder aber es ist so als Einzeiler gar nicht möglich...? Hat jemand einen Tipp wie ich sowas am elegantesten und laufzeiteffizientesten machen kann?

  • volatile_void
    3
    volatile_void
    Mitglied
    Punkte
    45
    Beiträge
    9
    • 13. Juli 2006 um 14:23
    • #2

    Ich würds ca so machen (code nicht getestet):

    Code
    uint32 bitset[4] = {0, 0, 0, 0};
    
    
    bitset[pos>>5] |= (1<<(pos&0x1f));
  • Incazzato
    8
    Incazzato
    Mitglied
    Punkte
    570
    Beiträge
    85
    • 13. Juli 2006 um 14:39
    • #3

    Schaut gut aus.
    Hab in der Zwischenzeit auch folgendes gefunden, dort wird im Prinzip das gleiche gemacht. Werd das gleich mal probieren.
    Danke

  • 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

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung