[C/C++] Variablen nicht in den Standartgrößen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Chillikid, 7. Oktober 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 7. Oktober 2008
    Variablen nicht in den Standartgrößen

    Hallo,

    ich habe mich ein wenig in C++ eingelesen und für meine Idee, die ich umsetzen will, wäre es praktisch Variablen zu haben, die z.B. nur 4 Bit groß sind. Was ich bisher gelsene habe gibt es ja nur z.B. char = 1 Byte usw.
    Geht das vllt. irgendwie und kann man vllt auch die einzelnen Bits "manuell" bearbeiten, also beispielsweise das dritte Bit zu einer 0 machen? Wäre echt praktisch, wenn da jemand was wüsste, weil ich mir sonst irgendeine komplizierte Lösung ausdenken müsste

    MfG

    Chillikid
     
  2. 7. Oktober 2008
    AW: Variablen nicht in den Standartgrößen

    Hey!

    Direkt Bits ansteuern geht nicht. Das geht nur, indem man eine Variable erstellt, und die Bits dann setzt (z.B. per shift durch >> oder <<) (Wikipedia). Wenn du nur '1' oder '0' haben willst, benutz doch einfach eine Variable des Typs boolean oder erstell dir dein eigenes Macro bzw. eine eigene 'Enum'eration

    Mfg,

    Kolazomai
     
  3. 7. Oktober 2008
    AW: Variablen nicht in den Standartgrößen

    also, wie gesagt, das kleinste is ein char mit 1 byte..

    aber mit den bit-operatoren (&, |, ~, ^, <<, >>) kannst du einzelne bits setzen

    mit | kannst du einzelne bits setzen
    mit & kannst du einzelne bits abfragen
    mit ~ kannst du die bits negieren (0 wird 1 und 1 wird 0)
    mit ^ kannst du ne xor-abfrage machen
    mit << kannst du nach links shiften (aus 0001 << 2 wird: 0100)
    mit >> kannst du nach rechts shiften
     
  4. 7. Oktober 2008
    AW: Variablen nicht in den Standartgrößen

    Mal ne allgemeine Frage: Hat der Shift-Operator "<<" was mit dem Operator bei "cout << ..." zu tun?
     
  5. 7. Oktober 2008
    AW: Variablen nicht in den Standartgrößen

    Naja, bei c++ kann man ja Operatoren überladen. Also wenn man z.B ne Klasse test hat und den operator+ hat, kann man das ausführen:

    Code:
    test t1, t2, t3;
    t3 = t2 + t3
    genauso hat iostream (die basisklasse) halt den operator<< und operator>> überladen. aber bitoperationen bruacht man eh nich, also geht das ^^

    man hätte aber genauso gut den operator+ nehmen können, dann wärs halt so:
    Code:
    std:.cout + "test" + var + std::endl;
     
  6. 7. Oktober 2008
    AW: Variablen nicht in den Standartgrößen

    Das mit dem Bitweisen Operation kannte ich schon, wollte eher wissen, ob es irgendwas "besseres" gibt. Trotzdem Danke dir und pyro. Das Problem was ich habe und weswegen ich nicht boolean benutzen will ist einfach, dass ich eine möglichst geringe Größe brauche und ein boolean belegt ja trotzdem 1 Byte.
    Naja ich denke ich werde versuchen, mehrere meiner Werte einfach nacheinander in andere Variablen zu schreiben, also z.B. die ersten 4 Bits des char sind der 1. Wert, die anderne der 2. und so weiter...

    Aber ich habe gerade in einem Code noch etwas gesehen.
    Was bedeutet das?? Weil aus dem Kommentar hätte ich geschlossen, dass die Variable nur 4 Bit hat?(

    MfG

    Chillikid
     
  7. 7. Oktober 2008
    AW: Variablen nicht in den Standartgrößen

    Also mal kurz vorweg, ich kenn mich in c++ nicht aus, hab nur c gelernt.

    In C kann man soweit ich weiß Bitfelder anlegen. Das funktioniert über Structs

    Bspl:

    Code:
    struct Bitfelder_s
    {
    unsigned int a:1; //Bitfeld der Länge 1
    unsigned int b:2; //Bitfeld der Länge 2
    unsigned int c:3; //Bitfeld der Länge 3
    } 
    
    
    struct Bitfeld_s bf;
    ...
    bf.a=...;
    bf.b=...;
    bf.c=...;
    
    
    Bitfelder dürfen nur als int vereinbart werden, wobei das unsigned bzw signed erforderlich ist(aus Gründen der Protabilität).

    Obwohl ich das noch nicht gestet habe müsste es auch mit einer einzigen Variable im Struct funktionieren. Ob der Compiler den rest auf die vollen 8 Bit auffüllt mit leeren Bits und damit trozdem Speicher belegt, weiß ich nicht. Wie gesagt is nur so ne Idee die ich im Hinterkopf hatte. Vll mal google einsetzen.

    mfg duddl
     
  8. 8. Oktober 2008
    AW: Variablen nicht in den Standartgrößen

    Macht er auf jedenfall. Ist eben nur ne komfortablere methode auf alle bits eines bytes zuzugreifen. Mit den Bitweisen operatoren kommt letztendlich das gleiche raus. Musst halt gucken wie dirs lieber ist.

    Aber wie schon gesagt wurde der kleinste teil den du holen kannst ist 1byte. Dass heist wenn du 10bit brauchst musst min 16bit holen. ist denk ich aber keine zugroße schwierigkeit zumal du maximal 7bit verschwendest.

    Das Problem ist dabei nicht C/C++ oder der eingesetzte Compiler sondern schlicht der Prozessor, der nur mit min. 1byte umgehen kann mit nur 1bit kann der wenig anfangen^^

    mfg tobZel
     
  9. 8. Oktober 2008
    AW: Variablen nicht in den Standartgrößen

    Ah, ok. Vielen Dank tobZel. Wenn das schon am Prozessor liegt kann es ja nicht möglich sein.

    MfG

    Chillikid

    ~closed~
     
  10. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.