Bitverschiebung
-
Hallo,
ich habe hier einen Temperatursensor, der mir in Bits die Temperatur ausgibt. Dafür muss ich aber erst acht Bit zu einem Byte "zusammenrechenen". In C wollte ich das mit dem Bitverschiebungsoperaor machen, was aber nicht so richtig geht (die Variable Daten bleibt immer 0):
char Daten = 0; void byteAuslesen() { char i = 0; for(i = 0; i <= 8; ++i) { bit_temp = bitAuslesen(); if(bit_temp == 1) { Daten <<= 1; } else { Daten <<= 0; } } }
die Funktion bitAuslesen() gibt mir entweder 0 oder 1 zurück.
Wäre schön wenn mir hier jemand helfen könnte.
-
char i = 0; for(i = 0; i <= 8; ++i) bit_temp |= bitAuslesen() << i;
-
Hallo,
erstmal Danke für deine Antwort. Das bringt mich weiter - hab mir die Operatoren jetzt nochmal angeguckt und meinen Denkfehler verstanden. Aber irgendwie scheint mein Compiler deinen geposteten Befehl nicht anzunehmen. Fehlermeldung:error C193: '<<': bad operand type
Mit dieser "Abfragenzuweisung" hat er aber seltsamerweise keine Probleme:
Daten |= bitAuslesen() ? 0x01 << i : Daten;
-
David_pb schrieb:
char i = 0; for(i = 0; i <= 8; ++i) bit_temp |= bitAuslesen() << i;
machs besser so:
int i; char Daten = 0; for(i = 0; i < 8; ++i) { Daten <<= 1; Daten |= bitAuslesen(); }
^^das erste bit ist dann ganz links und das letzte rechts.
-
Ok, danke. Hab ich geändert.