Heim > Java > javaLernprogramm > Shift-Operationsmethoden in Java (<<, >>, >>>)

Shift-Operationsmethoden in Java (<<, >>, >>>)

怪我咯
Freigeben: 2017-06-30 10:31:08
Original
1957 Leute haben es durchsucht

Der unten stehende Herausgeber bringt Ihnen einen Artikel über Java-Schichtbetriebsmethoden<<, >>, >>> Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor, um einen Blick darauf zu werfen.

<<, vorzeichenbehaftete Linksverschiebung, verschiebt den gesamten Binärwert des Operanden um eine angegebene Anzahl von Stellen nach links und füllt die niedrigen Bits mit Nullen.

int leftShift = 10;
System.out.println("十进制:" + leftShift + ", 二进制:" + Integer.toBinaryString(leftShift));
int newLeftShift = letfShift << 2;
System.out.println("左移2位后十进制:" + newLeftShift + ", 左移2位后二进制" + Integer.toBinaryString(newLeftShift)); //正整数x左移n位后的十进制结果,x = x * 2^n
Nach dem Login kopieren

Die oben genannten sind positive ganze Zahlen und die Operationsergebnisse sind wie folgt.

Als nächstes schauen wir uns an, was passiert, wenn eine negative Zahl um 2 Bits nach links verschoben wird. Das Ergebnis der Operation ist wie folgt.

Warum hat die Binärdatei -10 so viele Einsen? Wenn man genau zählt, sind es genau 32 Bit. Das erste, was Sie verstehen müssen, ist, dass negative Java-Zahlen in Zweierkomplementform gespeichert werden (Komplement = Komplement + 1). Die Binärzahl von 10 ist 1010 und ihr Komplement ist 0101. Die Addition von 1 ist das Komplement 0110. Warum gibt es also so viele zusätzliche Einsen? Dies liegt daran, dass der int-Typ in Java 8 Bytes belegt, was genau 32 Bits entspricht. Die hohen Bits des ursprünglichen Codes von 10 sind alle 0, und die hohen Bits seines Komplementcodes werden natürlich 1. Daher wird die gesamte Operation um 2 Bits nach links verschoben und die unteren Bits werden mit 0 gefüllt. Das endgültige Operationsergebnis ist x = (|x| + 2^n).

>>, vorzeichenbehaftete Rechtsverschiebung, verschiebt den gesamten Binärwert des Operanden um eine angegebene Anzahl von Stellen nach rechts, füllt die hohen Bits von Ganzzahlen mit 0 und füllt die hohen Bits von negativen Zahlen mit 1 (wobei das Vorzeichen negativer Zahlen unverändert bleibt).


int rightShift = 10;
System.out.println("十进制:" + rightShift + ", 二进制:" + Integer.toBinaryString(rightShift));
int newRightShift = rightShift >> 2;
System.out.println("右移2位后十进制:" + newRightShift + ", 右移2位后二进制" + Integer.toBinaryString(newRightShift));  //右移n位后的运算数x十进制结果,x = x / 2
Nach dem Login kopieren


Die oben genannten sind positive ganze Zahlen und die Operationsergebnisse sind wie folgt.

Als nächstes schauen wir uns an, was passiert, wenn eine negative Zahl um 2 Bits nach rechts verschoben wird. Das Ergebnis der Operation ist wie folgt.

Das Grundprinzip der vorzeichenbehafteten Rechtsverschiebung negativer Zahlen ist immer noch das gleiche wie bei der Linksverschiebung. Der Unterschied besteht in der Berechnung des Ergebnisses, da es sich um eine vorzeichenbehaftete Rechtsverschiebung handelt. und der letzte wird immer nach rechts verschoben. Das Ergebnis ist -1. Zusammenfassend lässt sich sagen, dass, wenn der Operand eine gerade Zahl ist, sein Operationsergebnis x = -(|x| / 2) ist. Wenn der Operand eine ungerade Zahl ist, dann ist sein Operationsergebnis x = -(|x| / 2). ) - 1.

>>>, vorzeichenlose Rechtsverschiebung, egal ob positiv oder negativ, die hohen Bits werden mit 0 gefüllt (Vorzeichenbit wird ignoriert)

Schauen Sie sich zuerst positive Zahlen an, positive Zahlen >>>Rechtsverschiebung ohne Vorzeichen und Rechtsverschiebung mit >>Vorzeichen haben die gleichen Berechnungsergebnisse

int rightShift = 10;
System.out.println("十进制:" + rightShift + ", 二进制:" + Integer.toBinaryString(rightShift));
int newRightShift = rightShift >>> 2;
System.out.println("右移2位后十进制:" + newRightShift + ", 右移2位后二进制" + Integer.toBinaryString(newRightShift));  //右移n位后的云算数x十进制结果,x = x / 2
Nach dem Login kopieren

Die oben genannten sind positive ganze Zahlen und die Operationsergebnisse sind wie folgt.

Als nächstes schauen wir uns negative ganze Zahlen an. Die Ergebnisse der Operation sind wie folgt.

Obwohl die Binärdatei nach der vorzeichenlosen Verschiebung und die Binärdatei nach der vorzeichenbehafteten Verschiebung gleich aussehen, sind die Ergebnisse ziemlich unterschiedlich. Denken Sie daran, dass es sich tatsächlich um eine vorzeichenbehaftete Verschiebung nach rechts handelt Rechenoperation, die Vorzeichen ignoriert, d. h. die High-Bits werden gleichmäßig mit 0 aufgefüllt.

Das obige ist der detaillierte Inhalt vonShift-Operationsmethoden in Java (<<, >>, >>>). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage