Zahl immer negativ (-Abs ())
Verfasst: 06.04.2005 16:22
Hi,
der Threadtitel ist evtl. etwas "ungünstig" gewählt, aber ich wollte da keinen ganzen Roman rein schreiben.
Nunja, also ich möchte sozusagen ohne Asm. eine Funktion schreiben, die einen Parameter (Pointer) immer negativ setzt. D.h., dass wenn die Variable bereits negativ ist, soll sie den Wert nicht ändern. Ist sie noch positiv, wird sie negiert.
Sicher kann man das mittelsschreiben, aber die If-Anweisung dauert mir zu lange 
Ich habe mir gedacht, das z.B. mittelszu lösen, jedoch kommt als Ergebnis dann -118 raus.
Aber warum? Das höchstwertige Bit gibt doch das Vorzeichen an und da das Bit mit dem ODER immer gesetzt wird, sollte sich doch nur das Vorzeichen ändern, scheinbar irre ich mich da jedoch
Denn eigentlich ist das ganze (meines Erachtens nach) nichts weiter als eine andere Schreibweise für a = a - 128.
Deswegen meine Frage: Wie stell ich es an, dass die Variable IMMER vorzeichenbehaftet ist (sprich: das höchstwertige Bit ist gesetzt)?
Und ich möchte kein Asm dafür :P
Falls jmd. Rat weiß, so solle er (oder sie) bitte sprechen.
MfG plusman
der Threadtitel ist evtl. etwas "ungünstig" gewählt, aber ich wollte da keinen ganzen Roman rein schreiben.
Nunja, also ich möchte sozusagen ohne Asm. eine Funktion schreiben, die einen Parameter (Pointer) immer negativ setzt. D.h., dass wenn die Variable bereits negativ ist, soll sie den Wert nicht ändern. Ist sie noch positiv, wird sie negiert.
Sicher kann man das mittels
Code: Alles auswählen
If n > 0
n = -n
EndIf

Ich habe mir gedacht, das z.B. mittels
Code: Alles auswählen
n.b = 10
n = n | $80
Aber warum? Das höchstwertige Bit gibt doch das Vorzeichen an und da das Bit mit dem ODER immer gesetzt wird, sollte sich doch nur das Vorzeichen ändern, scheinbar irre ich mich da jedoch

Denn eigentlich ist das ganze (meines Erachtens nach) nichts weiter als eine andere Schreibweise für a = a - 128.
Deswegen meine Frage: Wie stell ich es an, dass die Variable IMMER vorzeichenbehaftet ist (sprich: das höchstwertige Bit ist gesetzt)?
Und ich möchte kein Asm dafür :P
Falls jmd. Rat weiß, so solle er (oder sie) bitte sprechen.
MfG plusman