
Ich schreibe einen RadixSort für die Uni (das schnellste Sortierverfahren gewinnt einen Preis

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)