Vorzeichen ignorieren

Lipperlandstern

Level-3
Beiträge
6.005
Reaktionspunkte
1.726
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen zusammen.

Ich habe eine Intergerzahl die sowohl positiv als auch negativ sein kann. Das Vorzeichen interessiert mich aber nicht.
Im Augenblick mache ich das so das ich auf kleiner 0 vergleiche und wenn kleiner 0 mit *-1 multipliziere.
Hat jemand dafür eine elegantere Lösung ?

Grüsse

Axel
 
Das linke Bit ist doch das Vorzeichen, das kannst du doch einfach generell zurücksetzen. (oder logische Operation XOR etc.)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das klappt leider nicht ganz so:
Wort -1 =0xFFFF
ohne linkes Bit:
0x7FFF = 32767

Statt mit -1 zu multiplizieren kannst du das"Zweierkomplement" bilden. KZW bei der S5. S7 hat auch so etwas.

Oder:
L KF FFFF
XOW
 
Leider hat Siemens die ABS Funktion nur für Gleitpunkt an Bord.

Man kann als Ergebnis einer Rechenoperation auch die Statusbits A0 und A1 auswerten. A0=1 => Ergebnis <0, somit den Vergleicher sparen..
 
ich verwende meist trotzdem die ABS-Funktion - ist zwar etwas umständlich aber doch kompakt

Code:
L     MW20          // Wert, der ausgewertet werden soll (-32767 bis +32767)
ITD
DTR
ABS
RND
T     MW22          // fertig ausgewertet (0 bis +32767)

diese Lösung berücksichtigt allerdings nicht den Wert -32768
 
Das geht auch wohl sicher für 16-bit-Worte. Wenn du nun ein DWord hast, bekommst du spätestens bei 2hoch23 ein Problem.
 
Zurück
Oben