Heim  >  Artikel  >  Java  >  Was bedeutet >>> in Java?

Was bedeutet >>> in Java?

青灯夜游
青灯夜游Original
2019-11-18 16:00:3114148Durchsuche

Was bedeutet >>> in Java?

Was bedeutet in Java?

ist der Shift-Operator in Java, was eine vorzeichenlose Rechtsverschiebung bedeutet.

Die Operanden des Schiebeoperators sind ebenfalls binäre „Bits“. Sie können allein zur Verarbeitung von Ganzzahltypen (einem der Haupttypen) verwendet werden.

Der „vorzeichenbehaftete“ Linksverschiebungsoperator (2cf2f8adff827586a3ad799f3102b8d4>) verschiebt den Operanden auf der linken Seite des Operators um die auf der rechten Seite angegebene Anzahl von Ziffern nach rechts Operator. Der „vorzeichenbehaftete“ Rechtsverschiebungsoperator verwendet eine „Vorzeichenerweiterung“: Wenn der Wert positiv ist, wird 0 in das High-Bit eingefügt; wenn der Wert negativ ist, wird 1 in das High-Bit eingefügt.

Java fügt außerdem einen „vorzeichenlosen“ Rechtsverschiebungsoperator (>>>) hinzu, der eine „Nullerweiterung“ verwendet: Unabhängig davon, ob sie positiv oder negativ ist, fügen Sie 0 ein hohes Bit. Dieser Operator ist in C oder C++ nicht verfügbar.

Wenn char, byte oder short verschoben werden, werden sie automatisch in ein int konvertiert, bevor die Verschiebung durchgeführt wird. Es werden nur die 5 Low-Bits rechts verwendet. Dies verhindert, dass wir eine unrealistische Anzahl von Ziffern innerhalb eines int verschieben. Wenn ein langer Wert verarbeitet wird, ist das Endergebnis ebenfalls lang. Zu diesem Zeitpunkt werden nur die 6 niedrigen Bits auf der rechten Seite verwendet, um zu verhindern, dass die Bewegung die Anzahl der vorgefertigten Ziffern im langen Wert überschreitet.

Aber Sie können auch auf ein Problem stoßen, wenn Sie eine Rechtsverschiebung ohne Vorzeichen durchführen. Wenn Sie eine Rechtsverschiebungsoperation für ein Byte oder einen kurzen Wert durchführen, erhalten Sie möglicherweise nicht das richtige Ergebnis (insbesondere Java 1.0 und Java 1.1).

Sie werden automatisch in den Typ „int“ konvertiert und nach rechts verschoben. Eine „Null-Erweiterung“ kommt jedoch nicht vor, sodass Sie in diesen Fällen ein Ergebnis von -1 erhalten. Sie können das folgende Beispiel verwenden, um Ihre eigene Implementierung zu testen:

public class URShift {
public static void main(String[] args) {
int i = -1;
i >>>= 10;
System.out.println(i);
long l = -1;
l >>>= 10;
System.out.println(l);
short s = -1;
s >>>= 10;
System.out.println(s);
byte b = -1;
b >>>= 10;
System.out.println(b);
}
}

Das obige ist der detaillierte Inhalt vonWas bedeutet >>> in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn