Eine Abs für Int() gibt es aber wohl nicht! Oder täusch ich mich da!
Sonst würde ich das in Zukunft so machen!
Code: Alles auswählen
; val >>63 erzeugt 0 oder -1, da PB mit >> ein arthmeitschen Shift durchführt
; (val Xor (val >> 63) ist also identisch mit If Sign(val) : NOT val : Endif
; Dann muss noch bedingt 1 addiert werden, damit gibt das dann NEG val.
; (val >> 63) &1 erzeugt eine 1, wenn Sign Bit gesetzt
Macro mac_AbsQ(val)
(val ! (val >> 63) + (val >> 63) &1)
EndMacro
Macro mac_AbsInt(val)
If val < 0 : val = -val : EndIf
EndMacro
Define.q Q, r
Q = -100000000000000005
r = mac_AbsQ(Q)
Debug r
Debug Abs(Q)
r = Q
mac_AbsInt(r)
Debug r