Forum: Compiler & IDEs Problem mit uint_16t


von Jan S. (jan1991)


Angehängte Dateien:

Lesenswert?

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 :-)

von Peter II (Gast)


Lesenswert?

itoa( wert3, buf, 10 );

ist nicht für unsigned geeignet.

von (prx) A. K. (prx)


Lesenswert?

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.

von Jan S. (jan1991)


Lesenswert?

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??

von (prx) A. K. (prx)


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?


von Matthias L. (Gast)


Lesenswert?

>wert3 = wert1 + (wert2*(-1));

Warum schreibst du nicht einfach wert3 = wert1 - wert2;

?

von Ingo (Gast)


Lesenswert?

Das frage ich mich auch

von Jan S. (jan1991)


Lesenswert?

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
Noch kein Account? Hier anmelden.