Forum: Compiler & IDEs High-Byte mit dem Low-Byte einer Variablen addieren


von Amir B. (sticky)


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

von Matthias (Gast)


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.

von Amir B. (sticky)


Lesenswert?

die sache ist die:

ich will eigentlisch eine 8-bit addition, die das carry-bit 
miteinbezieht

Hintergrund:
Beitrag "Re: LIN Checksumme"

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.