Heim > Java > javaLernprogramm > Warum verändert das Hinzufügen eines „L' zu einem numerischen Wert in Java das Ergebnis einer Multiplikationsoperation drastisch?

Warum verändert das Hinzufügen eines „L' zu einem numerischen Wert in Java das Ergebnis einer Multiplikationsoperation drastisch?

Patricia Arquette
Freigeben: 2024-11-07 04:43:02
Original
482 Leute haben es durchsucht

Why does adding an

Verstehen der numerischen Wertdiskrepanz

Im bereitgestellten Codeausschnitt ist die offensichtliche Diskrepanz zwischen den beiden Multiplikationsoperationen auf das Fehlen oder Vorhandensein von zurückzuführen ein „L“-Zeichen, das an den numerischen Wert angehängt wird:

long oneYearWithL = 1000*60*60*24*365L;
long oneYearWithoutL = 1000*60*60*24*365;
Nach dem Login kopieren

Anhängen von „L“, um einen langen Wert sicherzustellen

Im ersten Ausdruck das Suffix „L“. bezeichnet ein langes Ganzzahlliteral, das angibt, dass der Wert als 64-Bit-Ganzzahl behandelt werden soll. Das Ergebnis dieser Multiplikation ist ein langer Wert von 31536000000 Millisekunden pro Jahr.

Das Fehlen von „L“ führt zu einem ganzzahligen Wert

Im zweiten Ausdruck ohne das „ Mit dem Suffix „L“ erzeugt die Multiplikationsoperation einen ganzzahligen Wert. In diesem Fall ist das Ergebnis 1471228928, wenn der erwartete Wert über 3 Milliarden Millisekunden liegen sollte.

Ganzzahlüberlauf und -kürzung

Die Diskrepanz entsteht durch das Ergebnis der Multiplikation von vier 32-Bit-Ganzzahlen (1000, 60, 60 und 24) überschreiten um eine fünfte 32-Bit-Ganzzahl (365) den Bereich einer Ganzzahl, der [-2^31, 2^31-1] beträgt. Das Ergebnis wird umgebrochen und erzeugt im zweiten Ausdruck den falschen Wert 1471228928.

Konvertierung in die Zweierkomplementdarstellung

Wenn das Suffix „L“ fehlt, wenn Ist das Ergebnis der Multiplikation der Ganzzahlen negativ und überschreitet den Ganzzahlbereich, wird es in die Zweierkomplementdarstellung konvertiert, bevor es der Ganzzahlvariablen zugewiesen wird. Diese Konvertierung stellt sicher, dass der negative Wert innerhalb des Ganzzahlbereichs dargestellt werden kann.

Sicherstellung korrekter Ergebnisse

Um das korrekte Ergebnis zu erhalten, ist es wichtig, den numerischen Wert anzugeben der über den ganzzahligen Bereich hinausgeht, als langer Wert durch Anhängen von „L“, um eine ordnungsgemäße Darstellung sicherzustellen und eine Kürzung oder Konvertierung in die Zweierkomplementdarstellung zu vermeiden.

Das obige ist der detaillierte Inhalt vonWarum verändert das Hinzufügen eines „L' zu einem numerischen Wert in Java das Ergebnis einer Multiplikationsoperation drastisch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage