Gast
#3666338
Hallo, kann mir jemand erklären, was diese Zeile bedeutet? a = ((buffer[index] << 8) | buffer[index + 1]) + 2; ich bekomme diese C-Bitrechnerei einfach nicht hin... :(( Danke und Gruß, Jan
|
Anzeige
|
C Frage (Bitoperatoren)
Gast
#3666338
Hallo, kann mir jemand erklären, was diese Zeile bedeutet? a = ((buffer[index] << 8) | buffer[index + 1]) + 2; ich bekomme diese C-Bitrechnerei einfach nicht hin... :(( Danke und Gruß, Jan Ich nehme an, dass buffer vom Typ uint8_t oder unsigned char ist. Nehmen wir an, in buffer[index] ist 0x12 und in buffer[index + 1] 0x34 gespeichert. Dann steht da:
0x12 wird nun um 8 Stellen nach links geschoben, was einer Multiplikation mit 256 entspricht:
Nun wird 0x1200 und 0x34 bitweise oder-verknüpft:
Und schon haben wir das Resultat:
Man hätte auch folgendes schreiben können:
Gast
#3666352
Alles klar, Danke! :) Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|