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.


Anmelden zum Antworten