mikrocontroller.net

Forum: Compiler & IDEs 16 Bit Variable aus 2 8 Bit laden


Autor: Paul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe in 2 8 Bit Variablen (unsigned char) jeweils den High und den 
Low Teil einer 16 Bit Variable. Wie kann ich das zu einer 16 Bit 
Variable zusammenfügen. In Assembler gibt es ja meist den Befehl den 
höherwertigen Teil der Variable zu lasen. Gibt es so etwas in C auch?

Viele Grüße

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Paul schrieb:
> Hallo,
> ich habe in 2 8 Bit Variablen (unsigned char) jeweils den High und den
> Low Teil einer 16 Bit Variable. Wie kann ich das zu einer 16 Bit
> Variable zusammenfügen. In Assembler gibt es ja meist den Befehl den
> höherwertigen Teil der Variable zu lasen. Gibt es so etwas in C auch?
>

Es gibt Fragen, die tauchen jeden 2.ten Tag auf :-)

uint8_t LowByte;
uint8_t HighByte;

uint16_t result = ( HighByte << 8 ) | LowByte;

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>uint16_t result = ( HighByte << 8 ) | LowByte;

Den Cast nicht vergessen:

uint16_t result = ( (uint16_t)HighByte << 8 ) | LowByte;

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht auch ohne, weil es dann als int gerechnet wird.
Der cast stört aber auch nicht; sauberer sieht es m.E. tatsächlich mit 
aus.

Autor: Besserwisser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> geht auch ohne, weil es dann als int gerechnet wird.
> Der cast stört aber auch nicht; sauberer sieht es m.E. tatsächlich mit
> aus.

Würde ich mich nicht darauf verlassen, ich habs schon anders erlebt. 
Also lieber den Cast darein!

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann war es kein C-Compiler, aber auch egal.

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.