Hallo Ich habe ein Problem mit einer Umrechnung. Ich möchte zwei Zahlen vom Typ uint16_t von einander Subtrahieren. Also c = a -b wobei b > a . Meines wissen Funktioniert das nach dem Zweierkomplemet. Jedoch ist mein wert im negativen Bereich. Anzeige über LCD Display. Dazu sei gesagt das das mit dem Daten Typ uint8_t funktioniert das ganze. Hoffe das mir Jemand helfen Kann :-)
Jan Schmelter schrieb: > Meines wissen Funktioniert das nach dem > Zweierkomplemet. Zweierkomplement hat ein Vorzeichen, unsigned hat keins. Wenn man aber das Ergebnis ohne Vorzeichen dann via Parameter einer Variablen mit Vorzeichen unterjubelt, dann ist plötzlich wieder eines drin.
Peter II schrieb: > itoa( wert3, buf, 10 ); > > > > ist nicht für unsigned geeignet Könntest du mir dann bitte sagen was dafür geeignet ist und warum das mit uint8_t varibalen funktioniert??
Weil alle Werte von uint8_t als positive int darstellbar sind. Nicht aber alle Werte von uint16_t (bei 16-Bit int). Und was den Ersatz angeht: Wird mal einen Blick in die Doku des Compiler bzw. dessen Lib, such dort itoa() und schau dich dort in der Nachbarschaft um. Vielleicht findet sich ja etwas passenderes.
>wert3 = wert1 + (wert2*(-1));
Warum schreibst du nicht einfach wert3 = wert1 - wert2;
?
Matthias Lipinsky schrieb: >>wert3 = wert1 + (wert2*(-1)); > > > > Warum schreibst du nicht einfach wert3 = wert1 - wert2; DAs hat ich auch erst eingebaut gehabt wollte nur Ausschließen ob der Kompiler da irgendwas verändert sonst hat des keine bewandnis @ A. K. : Hab nochmal nachgeschaut und mich mit dem Zweierkomplement vertan
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.