Javas clevere Methode zur Verschiebungsoperation
Linksverschiebungsvorgang: Compiler-Ausführungsschritte:
1) Wenn x vom Typ Byte, Short, Char ist, stufen Sie x in int um.
2) Wenn x vom Typ Byte ist, short, char, int , dann wird n neu zugewiesen (der Prozess ist: Nehmen Sie die unteren 5 Bits des Komplements von n und konvertieren Sie sie in einen dezimalen int-Wert, was der Annahme von n Modulo 32 entspricht: n=n%32);
Wenn x ein langer Typ ist, wird n neu zugewiesen (der Vorgang ist: Nehmen Sie die unteren 6 Bits des n-Komplements und konvertieren Sie sie in einen dezimalen Ganzzahlwert, was der Verwendung von n Modulo 64 entspricht: n=n %64);
( Da der int-Typ 4 Bytes, also 32 Bits, ist, macht das Verschieben von 32 Bits keinen Sinn. Für lange Zeit ist es Modulo 64)
3) Verschiebung x um n Stellen nach links, und der gesamte Ausdruck erzeugt einen neuen Wert (der Wert von x bleibt unverändert).
<< ist ein Linksverschiebungssymbol, Spalte >
>> ist ein Rechtsverschiebungssymbol mit einem Vorzeichenbit. x>>1 bedeutet, dass sich der Inhalt von nicht ändert. >1 bedeutet, dass der Inhalt der Änderung) Ergänzende Anweisungen:Java-CodeAusgabe
1 2 4 8 16 32 64 128
Ausgabe// 左移: 向左移动,右边补0 for (int i = 0;i < 8 ;i++) System.out.print( (1 << i) + " ");
40000000 20000000 10000000 8000000 4000000 2000000 1000000. 800000
Ausgabe// 右移: 向右移动,如果符号位(int型为32位)为0,左边补0,符号位为1,左边补1 // 符号位为1的右移 for (int i = 0;i < 8 ;i++) System.out.print( Integer.toHexString(0x40000000 >> i) + " ");
800000 00 c0000000 e0000000 f0000000 f8000000 fc000000 fe000000 ff000000
Allgemeines oben Die Regel ist nicht falsch, aber es gibt eine Grenze. Für den Typ int darf die Anzahl der verschobenen Ziffern 32 nicht überschreiten, und für den Typ long darf die Anzahl der verschobenen Ziffern 64 nicht überschreiten. Führen Sie nun den folgenden Test durch:
// 符号位为1的右移 // 最高4位为1000, 右移1位,变成1100也就是c, for (int i = 0;i < 8 ;i++) System.out.print( Integer.toHexString(0x80000000 >> i) + " ");
0x80000000 Nach der Verschiebung um 31 Bits nach rechts wird jedes Bit zu 1 (d. h. -1). nach rechts verschieben Natürlich sind 32 Bit immer noch -1, aber nach der Verschiebung um 32 Bit nach rechts ist das Ergebnis die Zahl selbst.
Durch das Testen der Links- und Rechtsverschiebungen von Daten vom Typ int und long haben wir Folgendes herausgefunden:
Java verarbeitet zuerst die Verschiebungsoperation „a <<||>> b“. .b Mod 32||64-Operation, wenn a vom Typ int ist, nehmen Sie Mod 32, wenn a vom Typ double ist, nehmen Sie Mod 64 und verwenden Sie dann die oben genannten allgemeinen Verschiebungsoperationsregeln zum Verschieben.
System.out.println(Integer.toHexString(0x80000000 >> 31)); // output: ffffffff System.out.println(Integer.toHexString(0x80000000 >> 32)); // output: 80000000
in der BitSet-Klasse gibt, denn Programmierer, die mit jdk vertraut sind, wissen, dass dann 1L << % 64) Es ist für JDK überflüssig.
Weitere Artikel zu Javas cleveren Methoden zur Verschiebungsoperation finden Sie auf der chinesischen PHP-Website!1L << bitIndex

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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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





Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

Die Verarbeitung von Feldzuordnungen im Systemdocken stößt häufig auf ein schwieriges Problem bei der Durchführung von Systemdocken: So kartieren Sie die Schnittstellenfelder des Systems und ...

Bei Verwendung von MyBatis-Plus oder anderen ORM-Frameworks für Datenbankvorgänge müssen häufig Abfragebedingungen basierend auf dem Attributnamen der Entitätsklasse erstellt werden. Wenn Sie jedes Mal manuell ...

Beginnen Sie den Frühling mit der Intellijideaultimate -Version ...

Lösungen zum Umwandeln von Namen in Zahlen zur Implementierung der Sortierung in vielen Anwendungsszenarien müssen Benutzer möglicherweise in Gruppen sortieren, insbesondere in einem ...

Konvertierung von Java-Objekten und -Arrays: Eingehende Diskussion der Risiken und korrekten Methoden zur Konvertierung des Guss-Typs Viele Java-Anfänger werden auf die Umwandlung eines Objekts in ein Array stoßen ...

Wie erkennt die Redis -Caching -Lösung die Anforderungen der Produktranking -Liste? Während des Entwicklungsprozesses müssen wir uns häufig mit den Anforderungen der Ranglisten befassen, z. B. das Anzeigen eines ...

Wie konvertieren Sie Namen in Zahlen, um Sortieren innerhalb von Gruppen zu implementieren? Bei der Sortierung von Benutzern in Gruppen ist es häufig erforderlich, den Namen des Benutzers in Zahlen umzuwandeln, damit er anders sein kann ...
