Thread "Konvertierung" in einer Gleichung
(4 answers)
Opened by meowi at 2011-08-06 19:11
Soweit ich das sehe ist das Problem dass bei int (32 Bit) Eine Zahl über ((2**32)/2)-1 als negative Zahl größer gleich -(2**32)/2 dargestellt wird und umgekehrt.
Das ist auf einem 64bit System anderes (zumindest in allen Compilersprachen) das da ist int eine 64 Bit Zahl und die Grenze ist ((2**64)/2)-1 Willst du dieses verhalten simulieren musst du nach jeder Rechung schauen wann die Zahl kleiner als -(2**32)/2 ist und wann größer als ((2**32)/2)-1, und den Wert negieren. ungetestet und unsicher ob das so richtig ist: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 sub as_int { my $x=shift; # nur 32 Bit $x=($x%2**32)*($x>0?1:-1); # Übergang bestimmen if($x < ((2**32)/2)*-1 || $x > ((2**32)/2)-1) { $x*=-1; } return x; } Last edited: 2011-08-06 22:49:21 +0200 (CEST) |