In Java wird int durch 32 Bit und long durch 64 Bit dargestellt. Diese beiden Grundtypen sind Ganzzahlen und haben keine anderen Darstellungsmethoden. Wie drücken sie sich innerlich aus? Es wird durch den Zweierkomplementcode dargestellt. Da wir bei der Lösung von Problemen häufig auf die Bitoperationen von Java stoßen, können die Bitoperationen von Java nur für int- und long-Typen verwendet werden. Wir haben also Grund zu analysieren, wie Java intern durch Binärdateien dargestellt wird. Hier nehmen wir nur int als Beispiel, long ist dasselbe.
1. Der Bereich von int
int wird in Java intern durch 32 Bits dargestellt, und das höchste Bit stellt das Symbol dar, also die Zahl, die wirklich dargestellt werden kann ist 31 Bit. Der Wertebereich des int-Typs von Java ist -2^31~2^31-1.
Warum ist der Bereich so? Hierbei handelt es sich um die binäre Speichermethode.
In Java wird das Zweierkomplement zum Speichern von int verwendet. Bei einer positiven Zahl ist ihr Komplement sie selbst. Nehmen wir als Beispiel 4 Bit. Für die positiven Zahlen 1–7 sind es jeweils 0001 und 0010. . . , 0111, insgesamt 7 Zahlen, also 2^3-1.
Bei 0 können Sie sehen, dass das Problem kommt. Es kann -0 oder +0 sein, beide sind 0. Entscheiden Sie, wie 0 dargestellt werden soll? Das Gesetz der Komplementcodes besagt, dass 0 als +0 betrachtet wird, sodass 0 durch 0000 dargestellt wird.
Zu diesem Zeitpunkt ist es notwendig, negative Zahlen auszudrücken. Wir glauben, dass die Komplementdarstellung einer negativen Zahl die Umkehrung ihres Absolutwerts (invertiert zusammen mit dem Vorzeichenbit) plus 1 ist. Für -5 ist der Absolutwert beispielsweise 5, was als 0101 ausgedrückt wird. Wenn er invertiert ist, ist er 1010, und plus eins ist 1011. Dies ist die Komplementdarstellung von -5.
Zu diesem Zeitpunkt kann 1000 zur Darstellung von -8 verwendet werden, sodass der Bereich negativer Zahlen -2 ^ 31 beträgt, was auch den Wertebereich von int erklärt. Das Gleiche gilt für 64-Bit-Längen.
2. Javas Bitoperationen
Wie werden Javas Bitoperationen ausgeführt? Denken Sie daran, dass eine Verschiebungsoperation die gesamte Zahl als Ganzes nach links oder rechts verschiebt. Bei einer Verschiebung nach links wird das Low-Bit mit 0 gefüllt. Wenn es nach rechts verschoben wird, gibt es zwei Situationen. Ist es 0 und eine positive Zahl, werden die High-Bits mit 0 aufgefüllt. Handelt es sich um eine negative Zahl, wird das High-Bit mit 1 gefüllt. Beispielsweise ist -5 1011 und eine Verschiebung um eine Position nach rechts ist 1101, also -3.
Es gibt auch eine kleine Bedienung. Wenn es sich um eine bitweise Operation handelt, denken Sie daran, dass auch das Vorzeichenbit beteiligt sein muss!
3. Der Zusammenhang zwischen Rechtsverschiebung und Division
Bei positiven Zahlen (natürlich auch 0) entspricht die Verschiebung um eine Position nach rechts dem Ergebnis der Division durch 2, aber nicht für negative Zahlen (um genau zu sein das Ergebnis einer Division durch 2 -1)! Beispiel: -5/2 ergibt -2 und -5>>1 ergibt -3.
Die Beziehung zwischen positiven und negativen Vorzeichen und ganzzahligen Divisions- und Restoperationen
Positive Zahlen/positive Zahlen, abgerundet
Negative Zahlen/ Negative Zahlen entsprechen der Division ihrer absoluten Werte
Positive Zahlen/negative Zahlen und negative Zahlen/positive Zahlen entsprechen der Division ihrer absoluten Werte multipliziert mit dem negativen Vorzeichen.
Was das Ergebnis von % betrifft, ist der Absolutwert des Ergebnisses derselbe wie der Modul ihres Absolutwerts, aber das Vorzeichen wird durch die erste Zahl bestimmt.
5. Warum müssen wir Komplementcode verwenden?
(1) Wie bereits erwähnt, um +0 und -0 sinnvoll auszudrücken;
(2) Sie können eine weitere negative Zahl als negative Zahl ausdrücken; >
(3) Mit Komplementcode können das Vorzeichenbit und andere Bits gleichzeitig verarbeitet werden, die Subtraktion kann auch als Addition verarbeitet werden. Wenn außerdem zwei im Zweierkomplement ausgedrückte Zahlen addiert werden und im höchsten Bit (Vorzeichenbit) ein Übertrag vorhanden ist, wird der Übertrag verworfen. Tatsächlich besteht ein wichtiger Grund darin, die Berechnung von Addition und Subtraktion zu erleichtern. Bei Verwendung des Zweierkomplementsystems für Operationen können die Vorzeichenbits für die Operation addiert werden. Wenn bei Bitoperationen ein Übertrag im Vorzeichenbit vorhanden ist, kann dieser verworfen werden, da er den Bitbereich überschritten hat. Positive Zahlen und ihre Addition sind nichts Besonderes. Die folgenden Beispiele sind alle 8 Bit. Beispiel: Für 7+7, also 00000111+00000111, ist das Ergebnis 00001110, also 14. Für die Subtraktion, zum Beispiel 9-4, denken wir, dass es 9+(-4) ist. Zuerst invertieren Sie 4, was 00000100 ist, und addieren eins, um das Komplement von -4 zu erhalten, das 11111100 darstellt , und dann hinzufügen, also +00001001(9)+11111100(-4)? 100000101Carry 1 des letzten VorzeichenbitsDa es den Bitbereich überschritten hat, wird es direkt verworfen und 5 kann direkt abgerufen werden. Das ist also die Erkenntnis, dass sich die Subtraktion in die Addition verwandelt.Das obige ist der detaillierte Inhalt vonWas ist Java Int?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!