mikrocontroller.net

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


Autor: Brun ... (brun)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht 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;

Autor: Timmo H. (masterfx)
Datum:

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

Autor: Brun ... (brun)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, funktioniert.

a und b sind beide wirklich nur 4Bit breit.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Brun ... (brun)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.