Detaillierte Erklärung des Java-Shift-Operators
Es gibt nur drei Java-Verschiebungsoperatoren: << (Rechtsverschiebung mit Vorzeichen) und >>>
1. Linksschiebeoperator
Linksschiebeoperator<< verschiebt alle Bits des angegebenen Werts um eine bestimmte Anzahl von Malen nach links.
1) Das allgemeine Format lautet wie folgt:
Wert <
Denken Sie nur an eine Sache zu den Regeln der Linksverschiebung: Verwerfen Sie das höchste Bit und füllen Sie das niedrigste Bit mit 0.
Wenn die Anzahl der verschobenen Bits die maximale Anzahl der Bits des Typs überschreitet, nimmt der Compiler ein Modulo von die Anzahl der verschobenen Bits. Wenn beispielsweise der Typ int um 33 Bit verschoben wird, werden tatsächlich nur 332=1 Bit verschoben.
2) Operationsregeln
Verschieben Sie alle Zahlen um die entsprechende Anzahl von Stellen in Binärform nach links, verschieben Sie die hohen Bits heraus (verwerfen) und füllen Sie die leeren Bits der niedrigen Bits mit Nullen auf .
Wenn der Operand der Linksverschiebung vom Typ int ist, wird das 31. Bit jedes Mal herausgeschoben und verworfen, wenn der Operand der Linksverschiebung vom Typ long ist bewegt sich um 1 Bit, sein 31. Bit Bit 63 wird entfernt und verworfen.
Wenn der Linksverschiebungsoperand vom Typ Byte und Short ist, werden diese Typen automatisch zum Typ Int erweitert.
Solange die Zahl nicht überläuft, ist bei positiven und negativen Zahlen das Verschieben um eine Position nach links gleichbedeutend mit der Multiplikation mit 2 hoch 1 und dem Verschieben von n Bits nach links entspricht dem Multiplizieren von 2 mit der n-ten Potenz
Zum Beispiel: 3 <<2 (3 ist vom Typ int)
1) Konvertieren Sie 3 in eine Binärzahl 0000 0000 0000 0000 0000 0000 0000 0011,
2) Verschiebe die beiden Nullen in den oberen Bits (links) der Zahl und verschiebe alle anderen Zahlen um 2 Bits nach links,
3 ) Füllen Sie die beiden Leerbits in den Low-Bits (rechts) mit Nullen auf. Das Endergebnis ist 0000 0000 0000 0000 0000 0000 0000 1100,
in Dezimalzahl umgewandelt ist 12.
Wenn die Anzahl in höherwertige Bits (31 oder 63 Bits) verschoben wird, wird der Wert negativ. Das folgende Programm veranschaulicht dies:
public class MultByTwo {
public static void main(String args[]) {
int i;
int num = 0xFFFFFFE;
for(i=0; i<4; i ) {
num = num << 1;
System.out.println(num );
}
}
}
2. Rechtsverschiebungsoperator
Rechtsverschiebungsoperator<< bewirkt, dass alle Bits des angegebenen Werts um die angegebene Anzahl von Malen nach rechts verschoben werden.
1) Das allgemeine Format lautet wie folgt:
Wert >>
Denken Sie nur an eine Sache zur Rechtsverschiebungsregel: Das Vorzeichenbit bleibt unverändert und das Vorzeichenbit wird nach links hinzugefügt
2) Operationsregeln:
Bewegen Sie alle Zahlen um die nach rechts entsprechende Anzahl von Ziffern in Binärform, die niedrigen Bits werden herausgeschoben (verworfen) und die hohen Bits werden mit Vorzeichenbits gefüllt, das heißt, positive Zahlen werden mit Nullen gefüllt, und negative Zahlen werden mit 1 gefüllt
Wenn die Die Operanden der rechten Verschiebung sind Byte- und Kurztypen. Diese Typen werden automatisch zum Typ int erweitert.
Wenn der zu entfernende Wert beispielsweise eine negative Zahl ist, wird für jede Rechtsverschiebung 1 nach links hinzugefügt. Wenn der zu entfernende Wert eine positive Zahl ist, wird für jede Rechtsverschiebung 0 nach links hinzugefügt. Dies wird als Vorzeichenbiterweiterung (Reserviertes Vorzeichenbit) (Vorzeichenerweiterung) bezeichnet und dient dazu, das Vorzeichen negativer Zahlen beizubehalten, wenn Rechtsverschiebungsoperationen
ausgeführt werden.
3) Mathematische Bedeutung
Das Verschieben eines Bits nach rechts entspricht einer Division durch 2, und das Verschieben von n Bits nach rechts entspricht einer Division durch 2 hoch n.
11 >>2 (11 ist vom Typ int)
1) Die binäre Form von 11 ist: 0000 0000 0000 0000 0000 0000 0000 10112) Die letzten beiden Ziffern der niederwertigen Bits werden herausgeschoben, und da die Zahl positiv ist, werden die höherwertigen Bits mit Nullen aufgefüllt.
3) Das Endergebnis ist 0000 0000 0000 0000 0000 0000 0000 0010.
In Dezimalzahl umgerechnet ist 3.
35 >> 2 (35 ist ein int-Typ)
Konvertieren Sie 35 in Binärform: 0000 0000 0000 0000 0000 0000 0010 0011
Entfernen Sie die letzten beiden Ziffern der unteren Bits: 0000 0000 0000 0000 0000 0000 0000 1000
in Dezimalzahl umgewandelt: 8
5) Das Vorzeichen bleibt beim Verschieben nach rechts nicht erhalten
Zum Beispiel
public class HexByte {
public static public void main(String args[]) {
char hex[] = {
'8', '9', 'a', 'b', 'c', 'd', 'e ' , 'f''
};
byte b = (byte) 0xf1;
System.out.println("b = 0x" hex[(b >> 4) & 0x0f] hex [ b & 0x0f]);}}
(b >> 4) & 0x0f Operationsprozess:
Die binäre Form von b ist: 1111 0001
4 Ziffern werden herausgeschoben: 0000 1111
Bitweise UND-Verknüpfung: 0000 1111
in Dezimalform umgewandelt: 15
Der Operationsprozess von
b & 0x0f: Die binäre Form von
b ist: 1111 0001
Die binäre Form von 0x0f ist: 0000 1111
Bitweise UND-Verknüpfung: 0000 0001
In Dezimalzahl umwandeln Die Form ist: 1
Die Ausgabe dieses Programms ist also wie folgt:
b = 0xf1
3. Vorzeichenloser Rechtsverschiebungsoperator> >>
Das allgemeine Format lautet wie folgt:
Wert >>>
Anzahl gibt die Anzahl der Bits an, um die der Wert verschoben werden soll.
Denken Sie nur an eines zu den Regeln der vorzeichenlosen Rechtsverschiebung: Ignorieren Sie die Vorzeichenbiterweiterung und füllen Sie das höchste Bit mit 0.
Der vorzeichenlose Rechtsverschiebungsoperator>>> ist nur für 32-Bit und 64-Bit sinnvoll Werte

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.
