High-Byte mit dem Low-Byte einer Variablen addieren

#1237962
Lesenswert?

Hallo.

Ich wollte mal wissen wie ihr am besten dieses problem lösen würdet.
(auf einen ATMEGA168)

ich will das High-Byte einer 16-Bit Variablen mit dem Low-Byte der 
selben Variablen auf addieren und das ergebniss in eine 8-Bit variable 
speichern.

dachte mir das so:
1
uint16_t var;
2
uint8_t HiByte;
3
uint8_t LowByte;
4
uint8_t sum;
5

6
HiByte = (var >> 8);
7
LowByte = (unsigned char) var;
8

9
sum = HiByte + LowByte;
habt ihr ne bessere Idee bzw haut das überhaupt hin?

Gruß Sticky
Gast #1237974
Lesenswert?

1
uint16_t var;
2
uint8_t sum;
3

4
sum  = (uint8_t) ( (var & 0x00FF) + (var >> 8) );

Allerdings sollte Dir klar sein, dass es einen Überlauf geben könnte.
Außerdem solltest Du auch wissen, was der Überlauf in deinem 
Anwendungsfall
bewirkt.

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