Forum: Compiler & IDEs shift


von Armin O. (Gast)


Lesenswert?

Hi

in einem C Quellcode habe ich folgende Zeile:

CAN_DATA1 = char * 256;  //shift to upper byte

Das "char" wurde zuvor per UART empfangen.

Warum shiftet man das mit * und nicht mit >>
?

Ist das überhaupt richtig so?

von johnny.m (Gast)


Lesenswert?

x * 256 macht das selbe wie x << 8 (Multiplikation mit 2^n ist identisch 
mit Shift um n Bits nach links, für Division gilt das genau umgekehrt)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Vorsicht ist geboten, "char" hat keine definierte Vorzeicheneigenschaft,
d. h. man sollte es immer als verschieden von sowohl signed char als
auch unsigned char betrachten, um portabel zu bleiben.

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.