Zweierkomplement zurückwandeln?



  • Hallöchen,
    *seufz* immer diese Programmier-Probleme *g*

    Folgendes:
    Per I²C bekomme ich einen Temperaturwert z.B. -25 Grad was dann ja (Zweierkomplement bei negativer Temperatur) 11100111 bzw. E7h wäre.

    So, diese Zahl möchte ich jetzt umwandeln, in "Klartext", also in einer Variable soll nun -25 stehen

    Ist das so korrekt, oder sollte man es so lieber nicht machen, sondern anders (wie??)

    Klartextvariable = ~(Variable des Typs uchar)+1;
    


  • Wieder ein Fall von unklarer Aufgabenstellung ...

    Du bekommst von dem Fühler das Bitmuster 11100111, das Du in eine unsigned-char-Variable stopfst, hab ich das bis dahin richtig kapiert? Jetzt möchtest Du im eine signed-char-Variable mit dem zugehörigen Wert belegen, oder? Wenn Du dich auf einem Zweierkomplementsystem befindest, dann entspricht 11100111 aber doch genau dem Bitmuster, das als 'signed char' interpretiert, -25 ergibt. Sollten das die Voraussetzungen sein, dann mußt Du doch gar nichts umrechnen ...



  • Ganz genau!
    Bloss diesen Hexwert den ich ja verpackt in einer uChar-Variable bekomme, den möchte ich halt in einer Variable (Typ..gute Frage!) haben, damit ich den konkreten Wert (z.B. -25) anzeigen kann, sowie diesen auch mit diesen vergleichen bzw. rechnen kann.



  • PeeDee schrieb:

    Ganz genau!
    Bloss diesen Hexwert den ich ja verpackt in einer uChar-Variable bekomme, den möchte ich halt in einer Variable (Typ..gute Frage!) haben, damit ich den konkreten Wert (z.B. -25) anzeigen kann, sowie diesen auch mit diesen vergleichen bzw. rechnen kann.

    Die 'übliche' Variante wäre einfach:
    int temp = (signed char)temp_uc;

    Der Cast ist dafür da, bewußt den Überlauf im signed-char-Bereich zu erzwingen. Nicht ganz sauber, aber sei's drum.



  • Okay, ich probiers morgen mal aus und werde mich auf jeden Fall hier nochmal zu Worte melden 🙂



  • Also ich muss sagen, es funzt!
    Danke!
    Ich dachte schon wieder viel zu kompliziert, so vonwegen Bit-Operationen und so.....


Anmelden zum Antworten