Forum: Compiler & IDEs 2 x 4 Bit zu 8 Bit zusammenfassen


von Brun .. (brun)


Lesenswert?

Hallo Forum,

hat von euch jemand eine Idee wie ich zwei 4 Bit Variablen zu einer 8 
Bit Variable zusammenfassen kann? Also nicht addieren sonder das die 
ersten 4 Bit die Werte von a haben und die zweiten 4 Bit die Werte von b 
haben.

In etwa so

a hat 4Bit
b hat 4Bit
c hat 8Bit


c = a & b;


Gruß Brun

von Stefan E. (sternst)


Lesenswert?

c = ((a<<4) & 0xf0) + (b & 0x0f);

Wenn sichergestellt ist, dass die restlichen Bits von a und b immer 0 
sind, geht es auch etwas einfacher:

c = (a<<4) + b;

von Timmo H. (masterfx)


Lesenswert?

Hast du doch schon fast gemacht:
1
a = 0xA;
2
b = 0x5;
3
c = (a << 4) | b;
Zur Sicherheit vielleicht sowas:
1
a = 0xA;
2
b = 0x5;
3
c = ((0xF & a) << 4) | (0xF & b );

von Brun .. (brun)


Lesenswert?

Danke, funktioniert.

a und b sind beide wirklich nur 4Bit breit.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> a und b sind beide wirklich nur 4Bit breit.

Aber nicht in C, C kennt keine Datentypen, die weniger als 8 Bit breit 
sind. Auch das in neueren C-Dialekten eingeführte bool ist nicht 
kleiner.

von Brun .. (brun)


Lesenswert?

Und wie sieht es damit aus?

struct {
   unsigned a:4;
   unsigned b:4;
} temp;

Das sollten doch zwei 4Bit Variablen sein die in einer 8Bit 
zusammengefasst sind. Oder?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.