Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Das >> ist vorzeichenbehaftetes und >>> vorzeichenloses verschieben:
Code:
int y = 1 << 31; //setze Vorzeichenbit
System.out.println(y+" und : "+(y>>1)+ "und: "+(y>>>1));
System.out.println(2*(y>>1));
System.out.println(Integer.toBinaryString(y));
System.out.println(Integer.toBinaryString(y>>1));
System.out.println("0"+Integer.toBinaryString(y>>>1));
//führende 0 wird von toBinaryString nicht angezeigt
Versuch dich mal an obigem... das 1 << 31 ist eine 1 mit 31 folgenden Nullen... sprich das Vorzeichenbit der Integervariablen y wird auf 1 gesetzt, so dass die Zahl negativ wird. Sie entspricht dann dezimal -2.147.483.648 also -2^31...
Wenn du jetzt nach rechts schiebst, wird tatsächlich wie gewohnt durch zwei geteilt - sprich es wird von links eine 1 reingeschoben... damit dies für die negativen Zahlen klappt. Wenn du auf Binärbasis nach rechts schieben willst und dir das Vorzeichen egal ist, kannst du >>> verwenden, um von links 0en reinschieben zu lassen. Dabei wird das Vorzeichen ignoriert und die Zahl wird dadurch natürlich positiv...
Das Beispiel eignet sich ganz gut um sich mal klar zu machen, wie Werte innerhalb von Variablen überhaupt gespeichert werden...
Ahhh...danke für das Bsp....kapiers jetzt....also dass >>> unterscheidet sich gegenüber >> nur wenn das linkeste Bit ) ) eine 1 ist...sprich die Zahl negativ wird.