@frank: Nicht nur exotisch, sondern auch falsch.
-1: $FFFFFFFF
Oberstes Bit auf 0 gesetzt:
$7FFFFFFF
Und $7FFFFFFF ist 2^31-1, also ungefähr 2 Mrd. und nicht, wie gewünscht, 1.
Wenn schon, dann müsste man es so machen:
if x<0 then x:=not x + 1;
Oder, der schnellere Assembler-Weg:
Code:
cdq eax
xor eax, edx
sub eax, edx