Bitfields: Speicherplatzoptimierung

Gast #1498648
Lesenswert?

Hallo,

ich bin dabei mein kleines Programm für einen ATtiny zu optimieren, was 
den Speicherbedarf angeht. Dabei ist mir folgendes Aufgefallen:
1
typedef struct MyStruct
2
{
3
  char a : 1;
4
  char b : 1;
5
  char c : 1;
6
  char d : 3;
7

8
} MyStruct;
9
MyStruct myStruct;
10

11

12
void myFunction()
13
{
14
    myStruct.a ^= 1;    // Diese Anweisung benötigt 14 Byte
15
}

Ich möchte oben markierte Anweisung gerne verwenden, aber nicht für den 
Preis von 14 Byte!

Wie kann ich das günstiger realisieren?
Gast #1498679
Lesenswert?

Ok,

wenn ich ein Byte pro Flag verwende, also in etwa so:
1
unsigned char a;
2

3
void myFunction()
4
{
5
    a = 0;
6
    while(1)
7
    {
8
        a ^= 1;    // Diese Anweisung benötigt 10 Byte!
9
    }
10
}

dann braucht die Anweisung leider immernoch 10 Byte!

Geht das nicht billiger?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren