Ich schreibe einen RadixSort für die Uni (das schnellste Sortierverfahren gewinnt einen Preis ) und erweitere diesen nun auf negative Zahlen.
Das ist soweit kein Problem (das MSB muss einfach nur genau andersherum betrachtet werden, ich kann den Code ja bei Gelegenheit , also nach Abgabetermin, offenlegen)
Zumindest, wenn die Darstellung negativer Integer bei Java einheitlich ist.
Zuerst stellt sich noch die andere Frage: Sind "int" bei Java IMMER 32 Bit lang?
Dann die Frage an euch:
Ergibt der folgende Code die gleiche Ausgabe - egal auf welcher Maschine/Betriebssystem/JavaVM ?
Code: Alles auswählen
public static void printBinary(int n)
{
System.out.print("" + n + " = 0b");
for(int i = 31; i >= 0; i--)
{
System.out.print("" + ( ((n&(1<<i)) == 0) ? "0" : "1") );
}
System.out.println("");
}
Code: Alles auswählen
printBinary(0x7FFFFFFF);
printBinary(2);
printBinary(1);
printBinary(0);
printBinary(-1);
printBinary(-2);
printBinary(0x80000000);
Wäre cool, wenn das jemand wüsste.
2147483647 = 0b01111111111111111111111111111111
2 = 0b00000000000000000000000000000010
1 = 0b00000000000000000000000000000001
0 = 0b00000000000000000000000000000000
-1 = 0b11111111111111111111111111111111
-2 = 0b11111111111111111111111111111110
-2147483648 = 0b10000000000000000000000000000000
Oder auch, wenn ihr es bei euch testen könntet (mit Angabe des Betriebssystems, der JavaVM, 32/64Bit, Prozessorarchitektur)